回答編集履歴

1

追記

2022/05/24 05:26

投稿

otn
otn

スコア84645

test CHANGED
@@ -2,4 +2,27 @@
2
2
 
3
3
  エディターでプログラムソースを変更したいということなら、エディターの文字列置換機能を使います。
4
4
 
5
+ #追記
6
+ なんか全然違う質問になりましたね。二重引用符と一重引用符は、Pythonでは同じ意味ですが、Windowsで`subprocess.run` `shell=True`で起動される`cmd.exe`では全く別の意味です。一重引用符は引用符としての意味を持たず、普通の文字です。
7
+ ```Python
8
+ 誤: proc = subprocess.run("start 'https://www.google.co.jp/'", stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True)
9
+ 正: proc = subprocess.run("start https://www.google.co.jp/", stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True)
10
+ ```
5
11
 
12
+ 一方、
13
+ ```Python
14
+ url = 'https://search.yahoo.co.jp/search?p=%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88+%26+%E3%82%A8%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%97&fr=top_ga1_sa&ei=UTF-8&ts=1225&aq=-1&oq=&at=&ai='
15
+ proc = subprocess.run(f"start {url}", stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True)
16
+ ```
17
+ の場合は、実行されるコマンドは、
18
+ `start https://search.yahoo.co.jp/search?p=%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88+%26+%E3%82%A8%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%97&fr=top_ga1_sa&ei=UTF-8&ts=1225&aq=-1&oq=&at=&ai=`となりますが、`&`はコマンドの区切りとなる特殊文字なので、二重引用符で囲む必要があります。
19
+ ただし、`cmd.exe`の`start`コマンドの直後に二重引用符で囲まれた文字列を書くと、それはウィンドウタイトルと見なされるので、単に二重引用符で囲むだけでは駄目で、その前にダミーのウィンドウタイトルを置く必要があります。
20
+ つまり、
21
+ ```Python
22
+ url = 'https://search.yahoo.co.jp/search?p=%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88+%26+%E3%82%A8%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%97&fr=top_ga1_sa&ei=UTF-8&ts=1225&aq=-1&oq=&at=&ai='
23
+ proc = subprocess.run(f'start "" "{url}"', stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True)
24
+ ```
25
+ です。
26
+
27
+ 説明は簡潔にしたので不明点があれば聞いてください。
28
+