会社のスクリプトの 1 つを csh から Python に変換する際に問題が発生しています。csh スクリプトはエイリアス化されたコマンドを呼び出しますが、同じエイリアス化されたコマンドを os.system() 経由で呼び出すと、機能しません。
したがって、foo
エイリアス化されたコマンドの場合:
CSH スクリプト (これは機能し、foo を実行します):
foo <argument>
Python (これは機能しません。エラーは foo が不明なコマンドであると主張します):
os.system("foo <argument>")
Pythonスクリプトを実行すると、何らかのコンテキストスイッチが発生する必要があると思います。これにより、Pythonはシェルで作成されたエイリアスにアクセスできなくなります。ドキュメンテーションを読んだ後、os.system
は を支持して廃止されているようでsubprocess
、それには私を助けることsubprocess
がshell
できるパラメータがあります... 問題は、私が Python 2.3 の使用に行き詰まっており、subprocess
バージョン 2.4 まで利用できないことです。 .
Pythonでエイリアスを複製するという考えがありました。たとえば、 はfoo
にエイリアスされていたとしcp
ます。
CSH:
alias foo cp
foo file1 file2
パイソン:
os.system("alias foo cp")
os.system("foo file1 file2")
サイコロはありません...ここにもエラーがあります:
sh: line 0: alias: foo: not found
sh: line 0: alias: cp: not found
sh: foo: command not found
foo
私の最後の努力は、Python が呼び出す独自の CSH スクリプトにそれらを使用する数行のコードを取得することです。しかし、それに頼らずにこれを機能させる方法があれば、私はそれについて知りたいです.
前もって感謝します!