我试图在创建并写入文件后立即使用 Popen() 对文件进行分类。它不起作用。打印 p 给出两个空元组 ('','')。为什么 ?如前所述,我使用重命名来确保原子写入 here .
#!/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()(您忘记了那里的括号以使其成为实际的函数调用)。这可以通过使用 with 语句来避免:
with open("__q", "w") as fd:
fd.write(t)
# will automatically be closed here
