Python2迁移到Python3遇到的问题
- 命令行输出数据类型出错
python2 中为str类型
python3中为bytes类型,需要加decode()转化为str
Python2 code:
import subprocess
import time
def run_command(command_str, timeout=10, method="all"):
command = command_str.split(' ')
popen = subprocess.Popen(command,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
bufsize=4096)
poll_inteval = 0.25
due_time = time.time() + timeout
output_stdout = ""
while time.time() < due_time and popen.poll() == None:
time.sleep(poll_inteval)
if popen.poll() is None:
popen.terminate()
output_stdout, output_error = popen.communicate()
if method == "list":
return output_stdout
else:
return output_stdout, output_error, popen.returncode
Python3 code:
import subprocess
import time
def run_command(command_str, timeout=10, method="all"):
command = command_str.split(' ')
popen = subprocess.Popen(command,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
bufsize=4096)
poll_inteval = 0.25
due_time = time.time() + timeout
output_stdout = ""
while time.time() < due_time and popen.poll() == None:
time.sleep(poll_inteval)
if popen.poll() is None:
popen.terminate()
output_stdout, output_error = popen.communicate()
if method == "list":
return output_stdout.decode()
else:
return output_stdout.decode(), output_error.decode(), popen.returncode