Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用子进程将脚本输出定向到文件?_Python_Linux_Subprocess - Fatal编程技术网

Python 使用子进程将脚本输出定向到文件?

Python 使用子进程将脚本输出定向到文件?,python,linux,subprocess,Python,Linux,Subprocess,在python脚本(“main.py”)中,我使用子流程模块运行另一个脚本(“sub_script.py”) 下面是“main.py”脚本中“运行”sub_script.py的代码: 只要“sub_script.py”中没有任何“print”语句,这就可以正常工作 现在我想将“sub_script.py”的所有输出传输到一个外部文件(“log.txt”) 我该怎么做?为什么不直接导入子脚本呢?为什么要做这些额外的子流程业务?我正在使用Cron运行“main.py”——因此使用子流程对我很有帮助。

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

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

只要“sub_script.py”中没有任何“print”语句,这就可以正常工作

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


我该怎么做?

为什么不直接导入子脚本呢?为什么要做这些额外的子流程业务?我正在使用Cron运行“main.py”——因此使用子流程对我很有帮助。
import
和启动子流程做根本不同的事情。对于初学者来说,如果脚本使用
如果_uname__=“_umain__;”:
块,则根本不会使用import运行脚本,您将无法转发输出(此处需要),并且您的主脚本将需要等待下标完成。另外,在一般情况下,您不能真正导入脚本(因为您不能保证它是python路径中的.py文件)。@user540009:“所以使用子流程对我很有帮助”?为什么?请解释原因@Rosh矛盾修饰法:使用
导入子脚本
并不是所需的全部代码,显然还需要更多。从原始脚本和导入并执行
sub_script.py
的原始脚本“转发输出”不会更改。我不确定“在一般情况下导入脚本”是什么意思,因为导入脚本需要一些设计工作,例如设置
PYTHONPATH
。问题仍然存在。为什么不直接导入并执行
子脚本
?为什么尝试使用子流程?很简单。我希望进程在后台运行。
subprocess.Popen([sys.executable, "sub_script.py"], stdout=open("log.txt", "a"))
subprocess.Popen([sys.executable, "sub_script.py"], stdout=open("log.txt", "a"))