質問編集履歴

7

文法修正

2021/05/02 04:37

投稿

person
person

スコア223

test CHANGED
File without changes
test CHANGED
@@ -150,8 +150,6 @@
150
150
 
151
151
  ドキュメントには下記のように書かれてました。
152
152
 
153
- フォルダ名またはファイル名に半角スペースが入っていた場合も、shell=TrueでできたのでわざわざFalseで使う場面が想像できませんでした。
154
-
155
153
 
156
154
 
157
155
  [subprocess --- サブプロセス管理¶](https://docs.python.org/ja/3/library/subprocess.html)

6

文法修正

2021/05/02 04:36

投稿

person
person

スコア223

test CHANGED
File without changes
test CHANGED
@@ -150,7 +150,7 @@
150
150
 
151
151
  ドキュメントには下記のように書かれてました。
152
152
 
153
- ファイル名にスペースが入っていた場合も、shell=TrueでできたのでわざわざFalseで使う場面が想像できませんでした。
153
+ ォルダ名またはファイル名に半角スペースが入っていた場合も、shell=TrueでできたのでわざわざFalseで使う場面が想像できませんでした。
154
154
 
155
155
 
156
156
 

5

文法修正

2021/05/02 04:34

投稿

person
person

スコア223

test CHANGED
File without changes
test CHANGED
@@ -150,7 +150,7 @@
150
150
 
151
151
  ドキュメントには下記のように書かれてました。
152
152
 
153
- これもshell=Trueで対応できな気がしますが
153
+ ファイル名にスペースが入っていた場合shell=TrueでできたのでわざわざFalseで使場面想像できませんで
154
154
 
155
155
 
156
156
 

4

追記

2021/05/02 04:33

投稿

person
person

スコア223

test CHANGED
File without changes
test CHANGED
@@ -141,3 +141,21 @@
141
141
  shell=Falseを指定した場合のメリットってありますか?
142
142
 
143
143
  普通に使う分にはshell=Trueにすればいいような気がしたのですが、shell=Falseとして実際に使う場面が想像できなかったので。
144
+
145
+
146
+
147
+ # 追記
148
+
149
+
150
+
151
+ ドキュメントには下記のように書かれてました。
152
+
153
+ これもshell=Trueで対応できそうな気がしますが。
154
+
155
+
156
+
157
+ [subprocess --- サブプロセス管理¶](https://docs.python.org/ja/3/library/subprocess.html)
158
+
159
+
160
+
161
+ > args はすべての呼び出しに必要で、文字列あるいはプログラム引数のシーケンスでなければなりません。一般に、引数のシーケンスを渡す方が望ましいです。なぜなら、モジュールが必要な引数のエスケープやクオート (例えばファイル名中のスペースを許すこと) の面倒を見ることができるためです。単一の文字列を渡す場合、shell は True でなければなりません (以下を参照)。もしくは、その文字列は引数を指定せずに実行される単なるプログラムの名前でなければなりません。

3

文法修正

2021/05/02 04:30

投稿

person
person

スコア223

test CHANGED
File without changes
test CHANGED
@@ -122,7 +122,7 @@
122
122
 
123
123
  Linuxだとコマンド文をスペース区切りのリストで引数に指定してあげればいいようです。
124
124
 
125
- "ls -a" というコマンドの場合は、
125
+ 例えば、"ls -a" というコマンドを実行するときは、
126
126
 
127
127
  ```
128
128
 
@@ -134,7 +134,7 @@
134
134
 
135
135
 
136
136
 
137
- す。
137
+ となります。
138
138
 
139
139
 
140
140
 

2

説明の例追加

2021/05/02 04:17

投稿

person
person

スコア223

test CHANGED
File without changes
test CHANGED
@@ -122,6 +122,20 @@
122
122
 
123
123
  Linuxだとコマンド文をスペース区切りのリストで引数に指定してあげればいいようです。
124
124
 
125
+ "ls -a" というコマンドの場合は、
126
+
127
+ ```
128
+
129
+ import subprocess as sp
130
+
131
+ ret = sp.run(["ls", "-a"], stdout=sp.PIPE)
132
+
133
+ ```
134
+
135
+
136
+
137
+ です。
138
+
125
139
 
126
140
 
127
141
  shell=Falseを指定した場合のメリットってありますか?

1

文法修正、ソースコードコメント追加

2021/05/02 04:16

投稿

person
person

スコア223

test CHANGED
File without changes
test CHANGED
@@ -8,13 +8,13 @@
8
8
 
9
9
 
10
10
 
11
- cmd = "dir"
11
+ cmd = "dir" # Linuxの場合は "ls"
12
12
 
13
13
  ret = sp.run(cmd, stdout=sp.PIPE, shell=True)
14
14
 
15
15
 
16
16
 
17
- print(ret.stdout.decode("cp932"))
17
+ print(ret.stdout.decode("cp932")) # Linuxの場合は "utf-8" または 指定なし
18
18
 
19
19
  ```
20
20
 
@@ -120,8 +120,10 @@
120
120
 
121
121
 
122
122
 
123
- Linuxだとコマンド文をスペース区切りのリストで引数に指定してあげればいいようですが、shell=Falseを指定した場合のメリットってありますか?
123
+ Linuxだとコマンド文をスペース区切りのリストで引数に指定してあげればいいようです
124
124
 
125
125
 
126
126
 
127
+ shell=Falseを指定した場合のメリットってありますか?
128
+
127
129
  普通に使う分にはshell=Trueにすればいいような気がしたのですが、shell=Falseとして実際に使う場面が想像できなかったので。