加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用Python子进程调用来调用Python脚本

发布时间:2020-12-20 10:34:55 所属栏目:Python 来源:网络整理
导读:我有一个 Python脚本需要在同一目录中调用另一个Python脚本.我这样做了: from subprocess import callcall('somescript.py') 我收到以下错误: call('somescript.py')File "/usr/lib/python2.6/subprocess.py",line 480,in callreturn Popen(*popenargs,**k
我有一个 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有效),那么你不能直接使用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)

也可以工作,但是使用字符串作为调用的输入不是跨平台的,如果你不是构建字符串的那个是危险的,并且如果可能的话通常应该避免.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读