【まず1嫁】くだすれPython(超初心者用) その60 (110レス)
上下前次1-新
1(2): 09/01(日)19:58 ID:tGCM6k6e(1/2) AAS
AA省
91: 11/21(木)22:56 ID:KBaufqW0(2/2) AAS
>>90
すみません、CMDが抜けてましたね。
いずれにしても、以下はtitleが正しく渡らずエラーになりまふ。
subprocess.run(['CMD', '/C', 'start', '"hogehoge"', 'date'])
↑hogehogeのクオートはダブルクォートをシングルで囲ってます
引数のリストで意図的なダブルクォートを渡す方法が知りたいです。
92(1): 11/21(木)23:33 ID:J//2W2fX(1) AAS
普通にエスケープしとけばいいだけでは?
93(1): 11/21(木)23:43 ID:7QbzhZq9(1) AAS
普通のコマンドでは,command "a" とcommand aは等価です.
これを区別するためCMDはWindows特有のGetCommandLineAのようなAPIでコマンド文字列を取得して使用しています.
単一の文字列で与えるやり方を使ってください.
94(1): 11/22(金)05:56 ID:mwglC+mp(1/3) AAS
>>92
やってみていただくと分かりますが、subprocess.runで引数をリストで与える場合、エスケープとかしてもダブルクォートを渡せないんです
>>93
Windows側の問題なんでしょうか?
検索で見てみると、Linuxなどの環境でもsubprocess.run(の引数リスト)でダブルクォートを渡せない問題はあるようです。
でもまぁそうですね、単一文字列にして渡す(あるいはダミーの空白を入れる)等で回避するのが手っ取り早いですね。
95: 11/22(金)06:17 ID:f0OPiVu4(1) AAS
これは問題ではないです.
例えばこんなスクリプトargv.pyを用意します.
import sys; print(sys.argv)
これに引数を与えてコマンドプロンプトで実行してみてください.
> python argv.py hello
['argv.py', 'hello']
> python argv.py "hello"
['argv.py', 'hello']
> python argv.py \"hello\"
['argv.py', '"hello"']
省3
96(1): 11/22(金)10:09 ID:y2/j6upt(1) AAS
>>94
やってみていただくと分かりますが、普通にエスケープすれば問題なくダブルクウォートを渡せます。
97: 11/22(金)12:40 ID:NWfC5DrL(1) AAS
エスケープしたダブルクォートでもシングルクォート内のダブルクォートでも同じように動くな
もし本当にダブルクォート渡せないならknown issueとして明記されてないとダメな話
98(1): 11/22(金)12:59 ID:bffzNsL+(1) AAS
外部リンク[py]:github.com
リストで渡された時に単一文字列に変換するLib/subprocess.pyのlist2cmdlineは
スペースかタブを含むか空の場合ダブルクォートで囲われる
リスト内のダブルクォートは有無を言わさずバックスラッシュ付きに変換されてしまうので
リストでやるのは無理っぽい
99: 11/22(金)13:31 ID:mwglC+mp(2/3) AAS
>>96
すみません、問題なく動くということであれば、はじめに書いたように、
subprocess.run(['CMD', '/C', 'start', '"hogehoge"', 'date'])
のように、subprocess.runでリストで引数を渡すやり方で、コマンドプロンプト(startコマンド)をタイトル付で実行する方法を教えていただけないでしょうか?
startコマンドのタイトルは必ずダブルクォートを付けて渡す必要があります。
100(1): 11/22(金)13:41 ID:rzIEBDJ+(1) AAS
引数のリストを文字列化するなどして変数に代入
これをsubprocess.runなりsubprocess.callをつかって実行コマンドと合わせて呼び出せばいい
後者は"shell=True"が必要かもしれない
101: 11/22(金)13:50 ID:gA6QtjHk(1) AAS
酷いやり取りだな
>>89が質問時点で既に分かっていることを、知ったか初心者がマウントしながら確認してるだけ
102(1): 11/22(金)14:16 ID:mwglC+mp(3/3) AAS
>>98
詳しくありがとうございます。やはりsubprocessの仕様の挙動としてそのようになってるのですね。
仕様ということであれば、その他の方法で対応するようにいたします。
>>100
ありがとうございます。
引数をリストで渡すことが、エスケープなどを不要にしたりなど推奨とされてるようだったのですが、逆にダメなケースがあるんですね。
103: 11/22(金)23:20 ID:axFgaWRB(1/2) AAS
BEアイコン:nida.gif
じつは、EchoAPIを使い始めてから、設計プロセスが大きく変わった。
104: 11/22(金)23:20 ID:axFgaWRB(2/2) AAS
BEアイコン:nida.gif
じつは、EchoAPIを使い始めてから、設計プロセスが大きく変わった。
105: 11/24(日)11:08 ID:9Gv3GpvE(1) AAS
まるちんこしね
106(1): 12/01(日)17:01 ID:Z4oxzDyw(1) AAS
pysctipterを久しぶりにアップデートしたら縦の破線が出るようになったのですが設定箇所がわかる方いませんか?
画像リンク[png]:i.imgur.com
107: 12/01(日)17:11 ID:WWGhC8aV(1) AAS
>>106
外出中でID変わりますが自決しました
外部リンク[html]:pyscripter.blogspot.com
108: 12/01(日)18:28 ID:iC/E1dQ8(1) AAS
立派な最後!弔意の敬礼 く(^-^)
109: 12/01(日)21:52 ID:R4KBjRQh(1) AAS
何で解決できたのに自決するんだよ、無理しやがって…
<(`・ω・´)
110: 12/03(火)20:25 ID:71nu04Co(1) AAS
>>102
ぶっちゃけWindows限定でよくて、問題にハマったらWin32APIを直接叩いた方が良いと思う。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.664s*