使用'>'的subprocess.call()问题

时间:2014-10-02 04:01:37

标签: python-3.x

我遇到了通话功能

的问题

我正在尝试使用'>'将程序的输出重定向到文本文件

这是我尝试过的:

import subprocess

subprocess.call(["python3", "test.py", ">", "file.txt"])

但它仍然在命令提示符下显示输出,而不是在txt文件中显示

1 个答案:

答案 0 :(得分:3)

有两种方法可以解决这个问题。

  1. 让python处理重定向:

    with open('file.txt', 'w') as f:
        subprocess.call(["python3", "test.py"], stdout=f)
    
  2. 让shell处理重定向:

    subprocess.call(["python3 test.py >file.txt"], shell=True)
    
  3. 一般来说,首先是首选,因为它避免了壳的变幻莫测。

    最后,您应该研究test.py可以作为导入模块运行而不是通过subprocess调用它的可能性。 Python的设计使得编写脚本变得容易,因此可以在命令行(python3 test.py)或模块(import test)中使用相同的功能。