在Python中运行“source”
我有一个文件 a.txt
,里面写了一些我想要执行的命令,比如:
echo 1
echo 2
echo 3
如果我在 csh(Unix 的一种命令行工具)上,我可以用 source a.txt
这个命令来运行它,结果就是这些命令会被执行。
现在我想在 Python 中用 os.execl
来运行这个文件,但我遇到了问题:
>>> os.execl("source", "a.txt")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.5/os.py", line 322, in execl
execv(file, args)
OSError: [Errno 2] No such file or directory
那我该怎么做呢?
3 个回答
1
你只是想运行一个脚本吗?如果是这样的话,你可以把“source”换成“bash”,这样可能就能达到你想要的效果。
如果你希望被引入的东西对Python进程产生一些影响,比如设置环境变量之类的,那你可能就没那么幸运了。
2
source
不是一个可以直接运行的程序,所以你不能直接执行它。它其实是一个在命令行中内置的命令。如果你真的需要使用它,就得先打开那个命令行。不过,如果你只是想运行一个脚本,其实根本不需要用到 source,只要让命令行直接执行你的脚本就可以了:
os.execl("/bin/bash", "a.txt")
1
你没有提供source
的完整路径,而os.execl
需要这个路径。
如果你想使用PATH
这个环境变量,你应该用os.execlp
。
可以查看一下os模块的文档。
不过,正如@Walter提到的,你可能需要用/bin/bash
来代替source
:
os.execl("/bin/bash", "a.txt")