【まず1嫁】くだすれPython(超初心者用) その60 (153レス)
上下前次1-新
81: 2024/11/18(月)00:03 ID:K13rtGep(1) AAS
Python1.13のJITはどんな感じ?いけてる?
82: 2024/11/18(月)01:43 ID:lkgbe76j(1) AAS
phpのJITを超えた
83: 2024/11/18(月)07:26 ID:RGRNWCsj(1) AAS
GitHub - rio-labs/rio: WebApps in pure Python. No JavaScript, HTML and CSS needed
外部リンク:github.com
84: 2024/11/18(月)07:47 ID:rNW/yup2(1) AAS
CSS好きじゃないからそういうのが増えるのは嬉しい
85: 2024/11/18(月)08:19 ID:boZQ3aHy(1) AAS
>80
AIωにメタ認知能力は無い
86(1): 2024/11/19(火)11:55 ID:LfZBfwg3(1/2) AAS
Fletでguiを作成しようと思っているのですが、右クリックのイベントって無いのです?
on_clickしかない感じなのですが、簡単に右クリックイベント足すならcv2やongameとかが色々あるみたいなのですが何が良いでしょうか?
87: 2024/11/19(火)13:49 ID:LfZBfwg3(2/2) AAS
>>86 調べきった結果、無かったのでとりあえずpynputモジュール使うことにしました。
88: 2024/11/20(水)12:29 ID:/vkp6Se1(1) AAS
右クリはGestureDetectorで包んでsecondaryからできる
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\ が見つかりません」となります)
省4
90(1): 2024/11/21(木)22:46 ID:W8C7TPi3(1) AAS
>>89
subprocess.runでやってるのと同じことを素で実行するなら
CMD /C start "hogehoge" date
91: 2024/11/21(木)22:56 ID:KBaufqW0(2/2) AAS
>>90
すみません、CMDが抜けてましたね。
いずれにしても、以下はtitleが正しく渡らずエラーになりまふ。
subprocess.run(['CMD', '/C', 'start', '"hogehoge"', 'date'])
↑hogehogeのクオートはダブルクォートをシングルで囲ってます
引数のリストで意図的なダブルクォートを渡す方法が知りたいです。
92(1): 2024/11/21(木)23:33 ID:J//2W2fX(1) AAS
普通にエスケープしとけばいいだけでは?
93(1): 2024/11/21(木)23:43 ID:7QbzhZq9(1) AAS
普通のコマンドでは,command "a" とcommand aは等価です.
これを区別するためCMDはWindows特有のGetCommandLineAのようなAPIでコマンド文字列を取得して使用しています.
単一の文字列で与えるやり方を使ってください.
94(1): 2024/11/22(金)05:56 ID:mwglC+mp(1/3) AAS
>>92
やってみていただくと分かりますが、subprocess.runで引数をリストで与える場合、エスケープとかしてもダブルクォートを渡せないんです
>>93
Windows側の問題なんでしょうか?
検索で見てみると、Linuxなどの環境でもsubprocess.run(の引数リスト)でダブルクォートを渡せない問題はあるようです。
でもまぁそうですね、単一文字列にして渡す(あるいはダミーの空白を入れる)等で回避するのが手っ取り早いですね。
95: 2024/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): 2024/11/22(金)10:09 ID:y2/j6upt(1) AAS
>>94
やってみていただくと分かりますが、普通にエスケープすれば問題なくダブルクウォートを渡せます。
97: 2024/11/22(金)12:40 ID:NWfC5DrL(1) AAS
エスケープしたダブルクォートでもシングルクォート内のダブルクォートでも同じように動くな
もし本当にダブルクォート渡せないならknown issueとして明記されてないとダメな話
98(1): 2024/11/22(金)12:59 ID:bffzNsL+(1) AAS
外部リンク[py]:github.com
リストで渡された時に単一文字列に変換するLib/subprocess.pyのlist2cmdlineは
スペースかタブを含むか空の場合ダブルクォートで囲われる
リスト内のダブルクォートは有無を言わさずバックスラッシュ付きに変換されてしまうので
リストでやるのは無理っぽい
99: 2024/11/22(金)13:31 ID:mwglC+mp(2/3) AAS
>>96
すみません、問題なく動くということであれば、はじめに書いたように、
subprocess.run(['CMD', '/C', 'start', '"hogehoge"', 'date'])
のように、subprocess.runでリストで引数を渡すやり方で、コマンドプロンプト(startコマンド)をタイトル付で実行する方法を教えていただけないでしょうか?
startコマンドのタイトルは必ずダブルクォートを付けて渡す必要があります。
100(1): 2024/11/22(金)13:41 ID:rzIEBDJ+(1) AAS
引数のリストを文字列化するなどして変数に代入
これをsubprocess.runなりsubprocess.callをつかって実行コマンドと合わせて呼び出せばいい
後者は"shell=True"が必要かもしれない
上下前次1-新書関写板覧索設栞歴
あと 53 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.005s