我正在使用os.system
将文件从系统复制到另一个系统。一个非常简单的程序的逻辑是在复制该文件后执行另一组命令。
问题是os.system
实际上并没有等待文件被复制,而是执行下一行。这会给系统带来问题。我实际上可以通过time.sleep()
给出一些等待函数,但我们必须复制大小从500 MB到有时20 GB的文件,并且所用的时间非常不同。
解决方案是什么?我需要以某种方式告诉我的程序文件被复制,然后执行下一行。
答案 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
要获得更好的答案,您需要提供更多有关您正在尝试做什么以及如何(以编程方式)卡住的详细信息。