Skip to main content
 首页 » 编程设计

python之在 Python 程序中,为什么我不能在写入文件后立即对其进行 cat

2025年05月04日12jackei

我试图在创建并写入文件后立即使用 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