[解決済み】Pythonからプログラムを実行するには? os.systemは、パスにスペースがあるため失敗します。
2022-03-31 20:29:48
質問
Pythonスクリプトで外部プログラムを実行する必要があるのですが、何らかの理由で失敗します。
以下のようなスクリプトがあった場合。
import os;
os.system("C:\\Temp\\a b c\\Notepad.exe");
raw_input();
すると、以下のようなエラーが出て失敗します。
C:Tempa' is not recognized as internal or external command, operable program or batch file.
プログラムを引用符で囲むと
import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe"');
raw_input();
すると、うまくいくのです。しかし、パラメータを追加すると、また動かなくなります。
import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe" "C:\\test.txt"');
raw_input();
プログラムを実行し、完了するまで待つには、どのような方法が正しいのでしょうか?これはビジュアルプログラムなので、出力を読む必要はありませんが、プログラムが完了するのを待つ必要があります。
また、プログラムをノンスペースのパスに移動させることも選択肢にないことに注意してください。
これもうまくいきません。
import os;
os.system("'C:\\Temp\\a b c\\Notepad.exe'");
raw_input();
シングルクォートとダブルクォートが入れ替わっていることに注意してください。
ここでメモ帳にパラメータを指定してもしなくても、エラーメッセージが出て失敗します。
ファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくありません。
解決方法は?
subprocess.call
を使えば、様々なシェルのクォート規則に対応しなければならない問題を回避することができます。また、文字列ではなくリストで指定できるため、引数の区切りがより簡単になります。
import subprocess
subprocess.call(['C:\\Temp\\a b c\\Notepad.exe', 'C:\\test.txt'])
関連
-
Python百行で韓服サークルの画像クロールを実現する
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] Pythonでパスから拡張子なしでファイル名を取得する方法は?
-
[解決済み] Pythonでファイルの絶対パスを取得する方法
-
[解決済み] Python プログラムを 50 ミリ秒間スリープさせるにはどうしたらいいですか?
-
[解決済み] Pythonの上達の道 - 見習いから第一人者へ
-
[解決済み] Pythonの文字列をスペースで埋めるにはどうしたらいいですか?
-
[解決済み] Windows 7のコマンドプロンプトでPythonプログラムを実行するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonを使ったオフィス自動化コード例
-
Python関数の高度な応用を解説
-
Python Decorator 練習問題
-
Python 入出力と高次代入の基礎知識
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。