试图从另一个python脚本中运行python脚本

trying to run a python script from within another python script

本问题已经有最佳答案,请猛点这里访问。

我试图在另一个Python脚本second.py中运行一个python脚本first.py

second.py包含os.system("python first.py")语句。

first.py:默认的开放应用程序以前是记事本。但是,我把默认程序改为python.exe,现在什么也没发生。first.py甚至不运行。

有人能帮忙吗?


如果所有脚本都来自"可信"源,则可以安全地使用execfile()

1
2
3
4
5
6
7
8
9
with open('second.py', 'w') as f: f.write('print"hello world"')

try:
    execfile('second.py')  # -> hello world
except Exception as e:
    # could also be"pass","time.sleep()", etc
    print 'exception {} occurred'.format(e)  

print 'continuing on...'

这样做的一个优点是,它独立于默认程序与Python脚本的关联。另外,execfile()的参数可以是另一个文件夹中脚本的完整路径,例如:

1
    execfile('c:/path/to/different/directory/first.py')


您可以使用subprocess.call模块运行另一个python程序。

1
2
3
import subprocess

subprocess.call("second.py", shell=True)


与使用os.system()不同,执行另一个脚本的干净方法是将import作为模块:

1
import second

将导致执行"second.py"。

1
2
3
4
>>> with open('test.py', 'w') as f: f.write('print"hello world"')
...
>>> import test
hello world