问题描述
|
在创建并写入文件之后,我尝试使用Popen()整理文件。它不起作用。打印p给出两个空元组(\'\',\'\')。为什么呢我已经使用重命名来确保原子写入,如此处所述。
#!/usr/bin/env python
import sys,os,subprocess
def run(cmd):
try:
p = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
p.wait()
if p.returncode:
print \"Failed with code: %s\" % str(p.returncode)
return p.communicate()
except OSError:
print \"OSError\"
def main(argv):
t = \"alice in wonderland\"
fd = open(\"__q\",\"w\"); fd.write(t); fd.close; os.rename(\"__q\",\"_q\")
p = run([\"cat\",\"_q\"])
print p
main(sys.argv)
解决方法
您没有致电
close
。使用fd.close()
(您忘记了那里的括号以使其成为实际的函数调用)。可以通过使用“ 3”语句来防止此情况:
with open(\"__q\",\"w\") as fd:
fd.write(t)
# will automatically be closed here