我正在编写一个python模块,用于处理当前目录的文件。 这是代码:
import subprocess
filename="tmp_file"
#sends ls output to a temporary file
with open(filename, 'w+') as f:
subprocess.Popen(['ls', '-p'], stdout=f)
f.seek(0)
result = f.read()
然而结果似乎是空的。为什么? (如果我在Python解释器中一次执行一个命令,它可以正常工作)
答案 0 :(得分:0)
您需要通过wait()
,check_call()
或其他替代方案让子流程完成。
subprocess.Popen(['ls', '-p'], stdout=f).wait()
此外,如果你的目标是列出目录的内容,Python有内置的方法来做到这一点 - 不需要使用子进程。