从新编写的文件读取的Python在模块中不起作用

时间:2018-05-06 10:23:09

标签: python file subprocess seek

我正在编写一个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解释器中一次执行一个命令,它可以正常工作)

1 个答案:

答案 0 :(得分:0)

您需要通过wait()check_call()或其他替代方案让子流程完成。

subprocess.Popen(['ls', '-p'], stdout=f).wait()

此外,如果你的目标是列出目录的内容,Python有内置的方法来做到这一点 - 不需要使用子进程。