将命令输出重定向到字符串 - Python 3.4.3 - 不适用于新版本
Redirecting command output to a string - Python 3.4.3 - Not working on the new version
我正在使用 Python 3.4.3。我想做的是,将 cmd 命令的输出存储到变量中,而不将其打印到命令行中。 Here 我找到了答案,但它适用于旧版本,但在 3.4.3 上,变量 "var" 包含一些随机字符。例如,如果我尝试使用命令 "dir" 对其进行测试,它会打印出一团糟。
import subprocess
from subprocess import Popen, PIPE
var = subprocess.Popen(COMMAND, stdin = PIPE, stdout = PIPE, stderr = PIPE).communicate()[1]
print(var)
如果我理解得很好,你只想 运行 一个外部命令并将输出放入一个变量中。
import subprocess
def foo():
return subprocess.Popen(COMMAND.split(), stdout=subprocess.PIPE).communicate()[0]
来自子流程文档:
Replacing /bin/sh shell backquote
---------------------------------
output=`mycmd myarg`
==>
output = Popen(["mycmd", "myarg"], stdout=PIPE).communicate()[0]
请注意 COMMAND.split()
有点……棘手。例如:
var1 = subprocess.Popen(['echo', '"Hey', 'Whosebug!"'], stdout=subprocess.PIPE).communicate()[0]
# String contained in var1: "Hey Whosebug!"\n
var2 = subprocess.Popen(['echo', 'Hey Whosebug!'], stdout=subprocess.PIPE).communicate()[0]
# String contained in var2: Hey Whosebug!\n
var1 != var2
# True
subprocess.check_output 做你想做的事:
https://docs.python.org/2/library/subprocess.html#subprocess.check_output
我正在使用 Python 3.4.3。我想做的是,将 cmd 命令的输出存储到变量中,而不将其打印到命令行中。 Here 我找到了答案,但它适用于旧版本,但在 3.4.3 上,变量 "var" 包含一些随机字符。例如,如果我尝试使用命令 "dir" 对其进行测试,它会打印出一团糟。
import subprocess
from subprocess import Popen, PIPE
var = subprocess.Popen(COMMAND, stdin = PIPE, stdout = PIPE, stderr = PIPE).communicate()[1]
print(var)
如果我理解得很好,你只想 运行 一个外部命令并将输出放入一个变量中。
import subprocess
def foo():
return subprocess.Popen(COMMAND.split(), stdout=subprocess.PIPE).communicate()[0]
来自子流程文档:
Replacing /bin/sh shell backquote
---------------------------------
output=`mycmd myarg`
==>
output = Popen(["mycmd", "myarg"], stdout=PIPE).communicate()[0]
请注意 COMMAND.split()
有点……棘手。例如:
var1 = subprocess.Popen(['echo', '"Hey', 'Whosebug!"'], stdout=subprocess.PIPE).communicate()[0]
# String contained in var1: "Hey Whosebug!"\n
var2 = subprocess.Popen(['echo', 'Hey Whosebug!'], stdout=subprocess.PIPE).communicate()[0]
# String contained in var2: Hey Whosebug!\n
var1 != var2
# True
subprocess.check_output 做你想做的事: https://docs.python.org/2/library/subprocess.html#subprocess.check_output