使用os.system运行另一个python脚本

时间:2013-05-01 20:51:25

标签: python os.system

我有旧的python。所以不能使用子进程。 我有两个python脚本。一个primary.py和另一个secondary.py。 在运行primary.py时,我需要运行secondary.py。

运行secondary.py的格式是'python secondary.py Argument'

os.system('python secondary.py Argument')...is giving error saying that can't open file 'Argument': [Errno 2] No such file or directory

2 个答案:

答案 0 :(得分:1)

根据您描述的代码,出现此错误有三个原因:

  • python不在您的PATH
  • secondary.py不在您当前的工作目录中。
  • Argument不在您当前的工作目录中。

从你编辑过的问题来看,这听起来像三个中的最后一个,这意味着问题可能与system根本无关......但是让我们看看如何解决这三个问题。

首先,您需要一个指向运行python的{​​{1}} primary.py的路径,这是sys.executable的用途。

然后你想要一条secondary.py的路径。不幸的是,对于这个,没有办法(在Python 2.3中)保证可以工作......但是在许多POSIX系统上,在许多情况下,sys.argv\[0\]将是primary.py的绝对路径,所以你可以只需使用os.path中的dirnamejoin将其转换为secondary.py的绝对路径。

然后,假设Argument在脚本目录中,为此做同样的事情:

my_dir = os.path.dirname(sys.argv[0])
os.system('%s %s %s' % (sys.executable, 
                        os.path.join(my_dir, 'secondary.py'),
                        os.path.join(my_dir, 'Argument')))

答案 1 :(得分:0)

你有哪个python版本? 你能展示你的secondary.py的内容吗? 对于较新的版本,它似乎正常工作:

ddzialak@ubuntu:$ cat f.py 
import os
os.system("python s.py Arg")

ddzialak@ubuntu:$ cat s.py

print "OK!!!"
ddzialak@ubuntu:$ python f.py
OK!!!
ddzialak@ubuntu:$