【问题标题】:Os.popen strange codec issueos.popen 奇怪的编解码器问题
【发布时间】:2021-05-24 18:31:22
【问题描述】:

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

import os

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

我得到这样的输出:

我需要得到这样的输出:

我也尝试用 subprocess 库来做这件事,但使用 subprocess 库要困难得多,而且在很长一段时间后我无法正确完成编码,所以如果可能的话,我真的很想用 os 库来做这个。

【问题讨论】:

  • 你能在命令提示符下运行chcp 并发布输出吗?
  • @SuperStormer 如果我这样做stream = os.popen("chcp"),我会得到这个’ҐЄгй п Є®¤®ў п бва ­Ёж : 866

标签: python shell cmd symbols popen


【解决方案1】:

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

import subprocess

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

编辑:dir 是一个内置的 shell,所以你需要 shell=True,但你可以使用 list arg 来执行普通命令。

【讨论】:

  • 它说当我执行"dir" 时找不到需要的文件,但是当我尝试更复杂的命令["netsh", "wlan", "show", "profile"] 时它工作了,我打算使用这个脚本来工作!非常感谢您的解决方案!
  • 糟糕,dir 可能是内置的 shell。
猜你喜欢
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-23
  • 1970-01-01
相关资源
最近更新 更多