在Python程序中,为什么在编写文件后不能立即显示文件?

问题描述

| 在创建并写入文件之后,我尝试使用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