shell os.popen奇怪的编解码器问题

tnkciper  于 2023-03-19  发布在  Shell
关注(0)|答案(1)|浏览(106)

所以我尝试使用os.popen来运行cmd命令,但问题是大多数命令都有西里尔字符,这似乎与os.popen有一些问题。

import os

stream = os.popen("dir")
output = stream.read()
print(output)

我得到的输出如下:

我需要得到这样的输出:

此外,我试图这样做的子进程库,但它是更难的工作与子进程库,我不能得到正确的编码后,真的很长一段时间,所以我真的想这样做的操作系统库,如果可能的话。

holgip5t

holgip5t1#

我不知道如何让os.popen使用特定的编码(我认为这是不可能的),所以这里有一个使用子进程的解决方案:

import subprocess

output = subprocess.run("dir", shell=True, encoding="cp866", stdout=subprocess.PIPE).stdout
print(output)

Edit:dir是shell内置的,所以需要shell=True,但是对于普通命令可以使用list arg。

相关问题