2

我有旧蟒蛇。所以不能使用子进程。我有两个 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

4

2 回答 2

2

鉴于您描述的代码,此错误可能出于三个原因出现:

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

从您编辑的问题来看,这听起来像是三个问题中的最后一个,这意味着该问题可能与此无关system……但是让我们看看如何解决所有三个问题。

首先,您想要一条通向python正在运行的相同路径primary.py,这就是sys.executable目的。

然后你想要一条通往secondary.py. 不幸的是,对于这个,没有办法(在 Python 2.3 中)可以保证工作......但在许多 POSIX 系统上,在许多情况下,sys.argv\[0\]这将是一个绝对路径primary.py,所以你可以使用dirnamejoinoutos.path将其转换为的绝对路径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')))
于 2013-05-01T20:52:58.550 回答
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:$ 
于 2013-05-01T20:57:21.510 回答