Python中的os.rename()时间

Python中的os.rename()时间,python,Python,我正在构建一个脚本,用于重命名一些文件,以确定文件是否已锁定。脚本递归地对给定目录中的每个文件执行以下操作 try: os.rename(source, temp) os.rename(temp, source) except OSError as e: print 'exception' 我的问题是,在os.rename()调用之间是否应该有一个time.sleep(1)?我担心在另一个os.rename()调用发生时,该文件可能不会被重命名,但我希望它能尽快运行

我正在构建一个脚本,用于重命名一些文件,以确定文件是否已锁定。脚本递归地对给定目录中的每个文件执行以下操作

try: 
    os.rename(source, temp)
    os.rename(temp, source)
except OSError as e:
    print 'exception'
我的问题是,在os.rename()调用之间是否应该有一个time.sleep(1)?我担心在另一个os.rename()调用发生时,该文件可能不会被重命名,但我希望它能尽快运行


谢谢你的帮助

否,因为这些命令都是阻塞的。

否,因为这些命令都是阻塞的。

第二个
os.rename()
将仅在第一个命令完成时调用(阻塞命令的原理)。因此,您不必担心执行时间。

第二个
os.rename()
将仅在第一个完成时调用(阻塞命令的原则)。因此,您不必担心执行时间。

将文件重命名为temp然后再重新命名的目的是什么?还可以看看这个问题:,有更简单的方法来处理您的问题。永远不应该有
时间。睡眠(1)
来解决竞争条件,除非作为绝对的最后手段。如果第一个
重命名
可能没有立即完成,也有可能一秒钟后就没有完成。@Lennartreegebro:实际上,它在Windows上不起作用。
rename
检查
文件共享\u删除
,而不是
文件共享\u写入
。虽然这些经常一起去,他们不必。(如果有人使用强制锁,它实际上可以在POSIX系统上工作……但是没有人这样做,而且,还有更好的方法来检查。)大问题是:90%的时候,人们问这个问题时,这并不是他们真正想要的。例如,如果您试图在打开文件之前对其进行过滤,请不要这样做,只需
try
打开文件即可。如果您认为这是构建类似
句柄
-或
openfiles
-o
lsof
-的工具的第一步,那么它不是;您需要查询内核对象。以此类推。将文件重命名为临时文件然后再重新命名的目的是什么?还可以看看这个问题:,有更简单的方法来处理您的问题。永远不应该有
时间。睡眠(1)
来解决竞争条件,除非作为绝对的最后手段。如果第一个
重命名
可能没有立即完成,也有可能一秒钟后就没有完成。@Lennartreegebro:实际上,它在Windows上不起作用。
rename
检查
文件共享\u删除
,而不是
文件共享\u写入
。虽然这些经常一起去,他们不必。(如果有人使用强制锁,它实际上可以在POSIX系统上工作……但是没有人这样做,而且,还有更好的方法来检查。)大问题是:90%的时候,人们问这个问题时,这并不是他们真正想要的。例如,如果您试图在打开文件之前对其进行过滤,请不要这样做,只需
try
打开文件即可。如果您认为这是构建类似
句柄
-或
openfiles
-o
lsof
-的工具的第一步,那么它不是;您需要查询内核对象。等等