我在python脚本中有以下功能:
invoke the shell to create some files(it is a split command from the shell)
for f in a folder
open f and write something
commands..
我已经看到,当执行for循环后程序进入命令时,许多文件没有被正确更改。有些是,有些则没有,是随机的。
实际上在循环之前,使用popen.subprocess调用的shell命令创建文件。发生的事情是,当popen.subprocess没有被终止时,有些for循环被执行。如果shell命令终止,我怎么能强制程序启动for循环?
答案 0 :(得分:0)
如果您没有刷新或关闭文件,可能还没有写出来。垃圾收集将隐式关闭文件对象,但对于您的用例可能不会很快发生。
for f in files:
out = open(f)
out.write(something)
out.close()
do_more.stuff()
这可以用
更简洁地表达for f in files:
with open(f) as out:
out.write(something)
do_more.stuff()
以便在离开with
块时隐式完成关闭。
答案 1 :(得分:0)
我想出了这个:
pid=subprocess.Popen(...)//invoke the shell command which creates a bunch of files
pid.wait()//wait until terminates
for f in a folder
open f and write something
commands..
这解决了我的问题