2017-09-26 47 views
0

我試圖通過使用stdout的文件對象來實驗subprocess.Popen()構造函數。當我運行下面的代碼時,文件被創建(包含內容),但內容不顯示在控制檯上。我無法理解我缺少的東西。任何人都可以指出我的錯誤(如果有的話)?無法從Python中的'stdout = file_object'的內容讀取文件

file_name = "abc.txt" 
fo = open(file_name, 'w') 
cmd = 'dir' 
child = subprocess.Popen(cmd, stdout=fo, stderr=fo, shell=True) 
fo.close() 

with open(file_name, 'r') as fo: print(fo.read()) 

回答

0

您必須在閱讀內容之前等待子過程完成。

#!/usr/bin/env python 
import subprocess 

file_name = "abc.txt" 
fo = open(file_name, 'w') 
cmd = 'dir' 
child = subprocess.Popen(cmd, stdout=fo, stderr=fo, shell=True) 
child.wait() 
fo.flush() 
fo.close() 

with open(file_name) as fo: 
    print(fo.read()) 

# print (child.poll())