问题描述
所以我尝试使用 os.popen 来运行 cmd 命令,但问题是大多数命令中都有西里尔字符,这似乎与 os.popen 存在一些问题。当我使用此代码时
import os
stream = os.popen("dir")
output = stream.read()
print(output)
我得到这样的输出:
我需要得到这样的输出:
我也尝试使用子进程库来做到这一点,但使用子进程库要困难得多,而且我在很长一段时间后无法正确完成编码,所以如果可能的话,我真的想用 os 库来做到这一点。
>解决方法
我不知道如何让 os.popen
使用特定的编码(我认为这不可能),所以这里是一个使用子进程的解决方案:
import subprocess
output = subprocess.run("dir",shell=True,encoding="cp866",stdout=subprocess.PIPE).stdout
print(output)
编辑:dir 是内建的 shell,因此您需要 shell=True
,但您可以将列表参数用于普通命令。