如何在os.system完成之后延迟执行?

时间:2011-01-29 13:33:03

标签: python file os.system

我正在使用os.system将文件从系统复制到另一个系统。一个非常简单的程序的逻辑是在复制该文件后执行另一组命令。

问题是os.system实际上并没有等待文件被复制,而是执行下一行。这会给系统带来问题。我实际上可以通过time.sleep()给出一些等待函数,但我们必须复制大小从500 MB到有时20 GB的文件,并且所用的时间非常不同。

解决方案是什么?我需要以某种方式告诉我的程序文件被复制,然后执行下一行。

3 个答案:

答案 0 :(得分:6)

我要尝试的第一件事是使用shutil.copyfile()而不是外部程序来复制文件。如果您必须使用外部程序,则应通过subprocess.Popen()而不是os.system()进行调用。您可以使用Popen.wait()等待子流程完成。

答案 1 :(得分:1)

我认为您应该使用shutil.copyfile而不是os.system来复制文件。

(编辑:woops,copy,not move)

答案 2 :(得分:1)

使用shutil模块复制文件。

  

shutil模块提供了许多   对文件和文件的高级操作   文件集合。特别是,   提供支持的功能   文件复制和删除。

另外,使用subprocess模块而不是os.system()

  

子进程模块允许您   产生新的进程,连接到他们的   输入/输出/错误管道,并获得   他们的退货代码。这个模块   打算取代其他几个,   较旧的模块和功能,例如:

     

使用os.system

要获得更好的答案,您需要提供更多有关您正在尝试做什么以及如何(以编程方式)卡住的详细信息。