【まず1嫁】くだすれPython(超初心者用) その60 (345レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
89
(2): 2024/11/21(木)21:43 ID:KBaufqW0(1/2)調 AAS
Windows環境でsubprocess.runを呼び出す時の、ダブルクオートの処理について教えてください
いろいろ検索したのですが、どうしても解決できませんでした。

目的は、コマンドプロンプトのstartコマンドで、タイトルを引数に与えて実行したい、というものです。
タイトルは必ずダブルクオートを付与する必要があります(実行するコマンド部分と区別するため)

pythonからではなく素で実行する場合(以下は仮でdateコマンド、タイトルをhogehoge)
start "hogehoge" date

これを、subprocess.runから呼び出す場合
subprocess.run(['CMD', '/C', 'start', '"hogehoge"', 'date'])
とすれば動きそうですが、subprocess.runがダブルクオートを変換してしまいエラーとなります。
(「\hogehoge\ が見つかりません」となります)

以下の用に、タイトル部分に意図的に空白を入れて、ダブルクオートを外せば、自動的にダブルクオートが付いて渡されます
subprocess.run(['CMD', '/C', 'start', 'hoge hoge', 'date'])

どうも、引数のリストで与える場合、ダブルクオートを意図的に与えることができないようになっているみたいです

回避策として、ダミーの空白を入れる、引数をリストで与えず単一の文字列で与える(非推奨)、実行後のプログラム内で"title"コマンドでタイトルを変更する、などあるかと思いますが、もし、引数のリストを使用し空白を入れないタイトルを指定する方法があれば教えていただけると助かります。
91: 2024/11/21(木)22:56 ID:KBaufqW0(2/2)調 AAS
>>90
すみません、CMDが抜けてましたね。

いずれにしても、以下はtitleが正しく渡らずエラーになりまふ。
subprocess.run(['CMD', '/C', 'start', '"hogehoge"', 'date'])
↑hogehogeのクオートはダブルクォートをシングルで囲ってます

引数のリストで意図的なダブルクォートを渡す方法が知りたいです。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.026s