1

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

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

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

4

3 回答 3

6

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

于 2011-01-29T13:38:05.923 回答
1

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

(编辑:哎呀,复制,不要移动)

于 2011-01-29T13:37:47.547 回答
1

使用shutil模块来复制文件。

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

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

subprocess 模块允许您生成新进程,连接到它们的输入/输出/错误管道,并获取它们的返回码。该模块旨在替换其他几个较旧的模块和功能,例如:

操作系统

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

于 2011-01-29T16:58:27.467 回答