我有旧的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
答案 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
中的dirname
和join
将其转换为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:$