我有一个Python脚本,它需要调用同一目录中的另一个Python脚本。我做到了:
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
works),则不能使用call直接调用它。请记住,Popen的工作方式是,第一个参数是它执行的程序,其余的是传递给该程序的参数。在这种情况下,程序实际上是python,而不是脚本。因此,以下操作将如您所料:
这将正确调用Python解释器,并告诉它使用给定的参数执行脚本。
请注意,这与上述建议不同:
这将尝试执行名为python somscript.py的程序,该程序显然不存在。
也会起作用,但使用字符串作为输入来调用不是跨平台的,如果不是您构建字符串的人,则会很危险,并且通常应尽可能避免。
窗户?Unix系统?
Unix需要shebang和exec属性才能工作:
作为脚本的第一行,并且:
在命令行或
如前所述。
如果将shell=True parameter添加到“call”调用中,Windows应该可以工作。
相关问题 更多 >
编程相关推荐