【发布时间】: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