python文件不完整,如何在处理回父进程之前等待它完成

时间:2015-12-03 17:33:03

标签: python subprocess popen

我希望能够设置一个将文件写入服务器的子进程,然后等到它完全完成后再处理回父进程。 我收到了一个帖子请求的图像文件。我解析它,然后使用以下代码将其写入服务器......这很好。

path="/var/bla/bla/bla/"
original_fname = file1['filename']
output_file = open(os.path.join(path,original_fname), 'w')
output_file.write(file1['body'])

问题是,我必须使用imagemagick命令行工具访问此文件,然后才能获取某些数据。但是使用上面的代码太早了,并且该过程没有完成创建文件。 我想在上面的代码之后这样做......

subprocess.Popen(stdout=output_file)
Popen.communicate()

但收到以下错误....

  

'Popen'对象没有属性'_child_created'

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

写完后你没有关闭文件。你可以这样做:

output_file = open(os.path.join(path,original_fname), 'w')
output_file.write(file1['body'])
output_file.close()

但我建议使用with关键字,即使块中发生错误,它也会关闭文件描述符:

with open(os.path.join(path,original_fname), 'w') as output_file:
    output_file.write(file1['body'])