0

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

どうやってするの?

4

3 に答える 3

2

sourceは実行可能プログラムではないため、直接実行することはできません。むしろ、シェルの組み込みコマンドです。本当にアクセスする必要がある場合は、代わりにそのシェルを起動する必要があります。ただし、スクリプトを実行するだけの場合は、source を使用する必要はまったくありません。シェルにスクリプトを直接実行させるだけです。

os.execl("/bin/bash", "a.txt")
于 2010-06-17T16:48:39.987 に答える
1

スクリプトを実行したいだけですか?その場合、「ソース」を「bash」に置き換えると、おそらく必要なものを取得できます。

環境変数の設定など、Python プロセスに副作用を持たせたい場合は、おそらく運が悪いでしょう。

于 2010-06-17T16:39:24.247 に答える
1

へのフル パスを指定していないためsourceos.execlパスが必要です。

PATHenv 変数を使用する場合は、 を使用する必要がありますos.execlp

os モジュールのドキュメントを参照してください。

ただし、@Walterが言及しているように、おそらく/bin/bash代わりに次のものが必要ですsource

os.execl("/bin/bash", "a.txt")
于 2010-06-17T16:46:01.007 に答える