我有一个 Python脚本需要在同一目录中调用另一个Python脚本.我这样做了: from subprocess import callcall('somescript.py') 我收到以下错误: call('somescript.py')File "/usr/lib/python2.6/subprocess.py", line 480
from subprocess import call call('somescript.py')
我收到以下错误:
call('somescript.py') File "/usr/lib/python2.6/subprocess.py", line 480, in call return Popen(*popenargs, **kwargs).wait() File "/usr/lib/python2.6/subprocess.py", line 633, in __init__ errread, errwrite) File "/usr/lib/python2.6/subprocess.py", line 1139, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory
我虽然在同一个文件夹中有脚本somescript.py.我在这里错过了什么吗?
如果’somescript.py’不是你通常可以直接从命令行执行的东西(即,$:somescript.py有效),那么你不能直接使用call调用它.请记住,Popen的工作方式是第一个参数是它执行的程序,其余的是传递给该程序的参数.在这种情况下,程序实际上是python,而不是你的脚本.所以以下内容将按预期工作:
subprocess.call(['python', 'somescript.py', somescript_arg1, somescript_val1,...]).
这正确地调用Python解释器并告诉它使用给定的参数执行脚本.
请注意,这与上述建议不同:
subprocess.call(['python somescript.py'])
这将尝试执行名为python somscript.py的程序,该程序显然不存在.
call('python somescript.py', shell=True)
也可以工作,但是使用字符串作为调用的输入不是跨平台的,如果你不是构建字符串的那个是危险的,并且如果可能的话通常应该避免.