“运行”;资料来源;来自python

“运行”;资料来源;来自python,python,csh,os.execl,Python,Csh,Os.execl,我有一个文件a.txt,其中包含我想要运行的命令行,比如: echo 1 echo 2 echo 3 如果我在csh(unix)上,我会做sourcea.txt,然后它就会运行。 从python中,我想用它运行os.execl,但是我得到: >>> os.execl("source", "a.txt") Traceback (most recent call last): File "<stdin>", line 1, in <module>

我有一个文件
a.txt
,其中包含我想要运行的命令行,比如:

echo 1
echo 2
echo 3
如果我在csh(unix)上,我会做
sourcea.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
os.execl(“source”,“a.txt”) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 execl中的文件“/usr/lib/python2.5/os.py”,第322行 execv(文件,参数) OSError:[Errno 2]没有这样的文件或目录
如何操作?

是否只想运行脚本?在这种情况下,您可以用“bash”替换“source”,并可能得到您想要的


如果您希望源代码对Python进程产生副作用,比如设置环境变量或其他什么,那么您可能运气不好。

是否只想运行脚本?在这种情况下,您可以用“bash”替换“source”,并可能得到您想要的


如果您希望源代码对Python进程产生副作用,例如设置环境变量或其他什么,那么您可能运气不佳。

您没有提供源代码的完整路径,并且
os.execl
需要该路径

如果要使用
PATH
env变量,应使用
os.execlp

尽管,正如@Walter提到的,您可能想要
/bin/bash
而不是
source

os.execl("/bin/bash", "a.txt")

您没有提供
的完整路径,并且
os.execl
需要该路径

如果要使用
PATH
env变量,应使用
os.execlp

尽管,正如@Walter提到的,您可能想要
/bin/bash
而不是
source

os.execl("/bin/bash", "a.txt")

source
不是可执行程序,因此不能直接执行。相反,它是shell中的内置命令。如果您确实需要访问该shell,则需要启动该shell。但是,如果您只想运行脚本,则根本不需要使用源代码,只要让shell直接执行您的脚本即可:

os.execl("/bin/bash", "a.txt")

source
不是可执行程序,因此不能直接执行。相反,它是shell中的内置命令。如果您确实需要访问该shell,则需要启动该shell。但是,如果您只想运行脚本,则根本不需要使用源代码,只要让shell直接执行您的脚本即可:

os.execl("/bin/bash", "a.txt")

我建议您删除最后一句中的“可能”一词。从技术上讲,您可以尝试解析脚本,确定它将做什么,然后将这些更改应用到Python的os.env中,等等。这可能是一个糟糕的想法,但这是可能的;因此“可能”。我建议您删除最后一句中的“可能”一词。从技术上讲,您可以尝试解析脚本,确定它将做什么,然后将这些更改应用到Python的os.env等。这可能是一个糟糕的想法,但这是可能的;因此“可能”