我正在使用os.system
将文件从系统复制到另一个。一个非常简单的程序的逻辑是在这个文件被复制后执行另一组命令。
问题是它os.system
实际上并没有等待文件被复制,而是开始执行下一行。这会导致系统出现问题。我实际上可以通过 提供一些等待功能,time.sleep()
但是我们必须复制大小从 500 MB 到有时 20 GB 的文件,并且所用的时间非常不同。
解决方案是什么?我需要以某种方式告诉我的程序文件已被复制,然后执行下一行。
我尝试的第一件事是使用shutil.copyfile()
而不是外部程序来复制文件。如果你必须使用外部程序,你应该调用它 via subprocess.Popen()
,而不是 via os.system()
。您可以使用Popen.wait()
等待子进程完成。
我认为您应该使用shutil.copyfile而不是os.system
复制文件。
(编辑:哎呀,复制,不要移动)
使用shutil模块来复制文件。
shutil 模块提供了许多对文件和文件集合的高级操作。特别是,提供了支持文件复制和删除的功能。
另外,使用subprocess模块而不是 os.system()
subprocess 模块允许您生成新进程,连接到它们的输入/输出/错误管道,并获取它们的返回码。该模块旨在替换其他几个较旧的模块和功能,例如:
操作系统
为了获得更好的答案,您需要提供更多关于您正在尝试做什么以及如何(以编程方式)卡住的详细信息。