2

何も変更していないことを誓います。これは1週間前に機能していました。しかし、os.system または subprocess.call でパスを呼び出すたびに、「エラー: ファイル NBK.swn が存在しません」というエラーが表示されます。

これが私のコードです:

import subprocess 
subprocess.call('"H:/2012/yada yada yada/swanrun" NBK')

これを正常に実行するには、H:/2012/yada yada yada/ でコマンド プロンプトを開き、「swanrun NBK」と入力すると正常に動作します。同じコードを実行して、最後に swanrun が実行するはずのファイルである 'NBK' を削除すると、swanrun は正常に実行されますが、もちろんどのファイルを実行するかはわかりません。助けてください!

4

2 に答える 2

1

サブプロセスは、文字列ではなくリストを期待しています。文字列のみを指定すると、全体が実行可能ファイル名のように扱われ、スペースで分割されません。「H:/2012/yada yada yada/swanrun」NBK というタイトルのファイルを探しています。代わりにsubprocess.call(['"H:/2012/yada/yada yada/swanrun"', 'NBK'])、プログラム「H:/2012/yada/yada yada/swanrun」を引数「NBK」でロードする方法を試してください。

于 2012-11-03T02:26:42.870 に答える
1

へのフル パスを使用するか"NBK"、現在の作業ディレクトリを設定します。

import subprocess 

path = "H:/2012/yada yada yada/"
subprocess.call('"H:/2012/yada yada yada/swanrun" NBK', cwd=path)

編集:通常、ファイル引数が完全修飾パスでない場合、アプリケーションは事前定義されたデータディレクトリ(存在する場合)、実行可能ファイルのディレクトリ、現在の作業ディレクトリ、または現在の作業ディレクトリまたは実行可能ファイルに関連するディレクトリを検索しますディレクトリ。このオプションは作業ディレクトリを設定します。これは、質問で説明されているように、" " を正常にcwd実行できるディレクトリに設定する必要があります。swanrun NBK

于 2012-11-01T00:43:47.450 に答える