如何在os.system完成后延迟执行?
我正在使用 os.system
来把一个文件从一个系统复制到另一个系统。这个简单程序的逻辑是,在文件复制完成后再执行一系列其他命令。
问题是,os.system
并不会等文件复制完成就直接执行下一行代码。这会导致系统出现问题。虽然我可以使用一些等待的函数,比如 time.sleep()
,但是我们要复制的文件大小从500MB到有时20GB不等,所需的时间差别很大。
那该怎么办呢?我需要以某种方式告诉我的程序文件已经复制完成,然后再执行下一行代码。
3 个回答
1
可以使用 shutil 模块来复制文件。
shutil 模块提供了一些对文件和文件集合的高级操作。特别是,它有一些功能可以帮助你复制和删除文件。
另外,建议使用 subprocess 模块,而不是 os.system()。
subprocess 模块让你可以创建新的进程,连接它们的输入/输出/错误管道,并获取它们的返回代码。这个模块的目的是替代一些旧的模块和函数,比如:
os.system
要得到更好的答案,你需要提供更多细节,说明你具体想做什么,以及在编程过程中遇到了什么困难。
1
我觉得你应该用 shutil.copyfile 来复制文件,而不是用 os.system
。
(编辑:哎呀,是复制,不是移动)
6
我建议你先试试用 shutil.copyfile()
这个方法来复制文件,而不是用外部程序。如果你确实需要用外部程序,那就应该通过 subprocess.Popen()
来调用,而不是用 os.system()
。你可以用 Popen.wait()
来等这个外部程序执行完。