Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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
当我使用os.system()在Python中打开一个.py文件时,它会立即自动关闭它。我该如何解决这个问题?_Python_Os.system - Fatal编程技术网

当我使用os.system()在Python中打开一个.py文件时,它会立即自动关闭它。我该如何解决这个问题?

当我使用os.system()在Python中打开一个.py文件时,它会立即自动关闭它。我该如何解决这个问题?,python,os.system,Python,Os.system,我正在编写一个脚本,需要打开另一个脚本,但要继续运行主脚本,以便两个脚本同时运行 我尝试了execfile(),但文件没有打开。当我使用os.system(somefile.py)时,它通过控制台成功地打开了.py文件,但立即将其关闭。是否有其他方法可以让我在主python脚本中运行python脚本,但让两个进程同时运行而不会相互冲突 以下是我测试过的示例代码: import os file_path = 'C:\\Users\\Tyler\\Documents\\Multitask Bot\\

我正在编写一个脚本,需要打开另一个脚本,但要继续运行主脚本,以便两个脚本同时运行

我尝试了
execfile()
,但文件没有打开。当我使用
os.system(somefile.py)
时,它通过控制台成功地打开了.py文件,但立即将其关闭。是否有其他方法可以让我在主python脚本中运行python脚本,但让两个进程同时运行而不会相互冲突

以下是我测试过的示例代码:

import os
file_path = 'C:\\Users\\Tyler\\Documents\\Multitask Bot\\somefile.py'

def main():
    os.system(file_path)

if __name__ == '__main__':
    main()

如果您想同时运行另一个脚本,请考虑该模块。

< P>如果您想同时运行另一个脚本,请考虑该模块。

< P> >代码> ExcFiele()/<代码>和<代码> OS.Stand()/Cyto>将阻止父进程退出,直到该子进程退出。使用
subprocess.Popen()
,例如

import subprocess, time
file_path = 'C:\\Users\\Tyler\\Documents\\Multitask Bot\\somefile.py'

def main():
    child = subprocess.Popen(['python', file_path])
    while child.poll() is None:
        print "parent: child (pid = %d) is still running" % child.pid
        # do parent stuff
        time.sleep(1)
    print "parent: child has terminated, returncode = %d" % child.returncode

if __name__ == '__main__':
    main()
这只是处理问题的一种方法。您可能希望从子级收集stdout和/或stderr,并可能将数据发送到子级的stdin。读取子进程模块。

execfile()
os.system()
将阻止父进程,直到子进程退出。使用
subprocess.Popen()
,例如

import subprocess, time
file_path = 'C:\\Users\\Tyler\\Documents\\Multitask Bot\\somefile.py'

def main():
    child = subprocess.Popen(['python', file_path])
    while child.poll() is None:
        print "parent: child (pid = %d) is still running" % child.pid
        # do parent stuff
        time.sleep(1)
    print "parent: child has terminated, returncode = %d" % child.returncode

if __name__ == '__main__':
    main()

这只是处理问题的一种方法。您可能希望从子级收集stdout和/或stderr,并可能将数据发送到子级的stdin。阅读子流程模块。

您的问题可能是该文件未在
C:\\Users\\Tyler\\Documents\\Multitask Bot\\
但是在别的地方。本地导入可能会失败


您能在
os.system
之前尝试执行
os.chdir('C:\\Users\\Tyler\\Documents\\Multitask Bot\\\)
吗?

您的问题可能是该文件没有在
C:\\Users\\Tyler\\Documents\\Multitask Bot\\\
但是在别的地方。本地导入可能会失败


你能在
os.system
之前尝试执行
os.chdir('C:\\Users\\Tyler\\Documents\\Multitask Bot\\\)
吗?

那么
somefile.py
做什么呢?它是否应该保持运行超过一瞬间?然后
somefile.py
做什么?它应该持续运行超过一瞬间吗?我同意@Neil。。。system()将等待,直到命令完成,IIRC。如果你真的想让它并行运行,子流程模块就是最好的选择。我同意@Neil。。。system()将等待,直到命令完成,IIRC。如果您真的希望它并行运行,那么子流程模块就是最好的选择。