使用pyinstaller之后,systeminfo将不会生成输出

时间:2018-12-12 13:35:29

标签: python windows pyinstaller system-information

我正在尝试运行:

output = subprocess.Popen(["systeminfo"],
                                      stdout=subprocess.PIPE, stdin=subprocess.PIPE,
                                      stderr=subprocess.PIPE)
file.write(output.stdout.read().decode("utf-8"))

在pyccharm中,此代码运行良好,它将把输出写入文件,但是当我使用时:

pyinstaller --onefile --noconsole start.py

并运行生成的.exe,它将卡在我的代码的那部分。我不知道为什么会这样。我还将它用于:

output = subprocess.Popen(["netstat", "-aon"],
                                          stdout=subprocess.PIPE, stdin=subprocess.PIPE,
                                          stderr=subprocess.PIPE)
file.write(output.stdout.read().decode("utf-8"))

和:

output = subprocess.Popen(["arp", "-a"],
                                          stdout=subprocess.PIPE, stdin=subprocess.PIPE,
                                          stderr=subprocess.PIPE)
file.write(output.stdout.read().decode("utf-8"))

这些运行正常,并将输出写入文件。

如果有人知道解决此问题的方法,请帮助我。

谢谢!

1 个答案:

答案 0 :(得分:0)

这与我的编码有关。使用后:

sys_enc = locale.getpreferredencoding()
output = subprocess.run(["systeminfo"], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE, encoding=sys_enc)
file.write(output.stdout)

一切正常,然后将其写入文件。