【まず1嫁】くだすれPython(超初心者用) その60 (345レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
89
(2): デフォルトの名無しさん [sage] 2024/11/21(木) 21:43:27.89 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"コマンドでタイトルを変更する、などあるかと思いますが、もし、引数のリストを使用し空白を入れないタイトルを指定する方法があれば教えていただけると助かります。
90
(1): デフォルトの名無しさん [sage] 2024/11/21(木) 22:46:13.69 ID:W8C7TPi3(1) AAS
>>89
subprocess.runでやってるのと同じことを素で実行するなら
CMD /C start "hogehoge" date
101: デフォルトの名無しさん [sage] 2024/11/22(金) 13:50:34.53 ID:gA6QtjHk(1) AAS
酷いやり取りだな
>>89が質問時点で既に分かっていることを、知ったか初心者がマウントしながら確認してるだけ
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.020s