【问题标题】:Directing script output to a file using subprocess?使用子进程将脚本输出定向到文件?
【发布时间】:2010-12-20 19:23:50
【问题描述】:

在 python 脚本(“main.py”)中,我使用 subprocess 模块运行另一个脚本(“sub_script.py”)。

这是“运行”“sub_script.py”的“main.py”脚本中的代码:

subprocess.Popen([sys.executable, "sub_script.py"])

只要“sub_script.py”中没有任何“打印”语句,它就可以正常工作。

我现在想将“sub_script.py”的所有输出传输到外部文件(“log.txt”)。

我该怎么做?

【问题讨论】:

  • 为什么不只是import sub_script?为什么要这么多额外的子流程业务?
  • 我正在使用 Cron 运行“main.py”——所以使用子进程对我很有帮助。
  • import 和启动子进程做着根本不同的事情。对于初学者,如果脚本使用 if __name__ = "__main__": 块,则根本不会使用 import 运行,您将无法转发输出(此处需要),并且您的主脚本需要等待下标完成。在一般情况下,您也不能真正导入脚本(因为您无法保证它是 python 路径中的 .py 文件)。
  • @user540009:“所以使用子进程对我有帮助”?为什么?请解释原因。 @Rosh Oxymoron:使用 import sub_script 并不是需要的整行代码,显然还需要更多。原始脚本的“转发输出”和导入并执行sub_script.py 的原始脚本不会改变。我不确定“在一般情况下导入脚本”是什么意思,因为导入脚本需要一些设计工作,即设置PYTHONPATH。问题仍然存在。为什么不简单地导入并执行sub_script?为什么要尝试使用子流程?
  • 简单。我希望该进程在后台运行。

标签: python linux subprocess


【解决方案1】:
subprocess.Popen([sys.executable, "sub_script.py"], stdout=open("log.txt", "a"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    相关资源
    最近更新 更多