假设我有两个文件是硬链接的:
-rw-rw-r-- 2 mparrott grp 5 Jul 28 09:38 bar
-rw-rw-r-- 2 mparrott grp 5 Jul 28 09:38 foo
然后,我在python中运行:
^{pr2}$我没有错误。但是,再次列出目录,我仍然看到foo
。在
-rw-rw-r-- 2 mparrott grp 5 Jul 28 09:38 bar
-rw-rw-r-- 2 mparrott grp 5 Jul 28 09:38 foo
发生这种情况似乎是因为这些文件确实是同一个文件(inode)。但是,我仍然希望foo
被删除或引发一个错误。在
有人知道这为什么会悄无声息地失败吗?我的问题是关于实现本身,而不是如何解决这个问题(我使用os.path.samefile
)解决问题。我用的是rhel 6.4。在
谢谢!在
Python的
os.rename
函数只执行rename
系统调用。如果源和目标是同一个文件,则系统调用不会静默执行任何操作。如果我运行C程序,得到的结果与Python脚本相同:这将打印
result = 0
并保留这两个文件。在此行为记录在Linux man page:
这也在POSIX中指定:
相关问题 更多 >
编程相关推荐