【问题标题】:PyQt - Qprocess Can not run command "chcp" directly but from batch its finePyQt - Qprocess 不能直接运行命令“chcp”,但可以从批处理中运行
【发布时间】:2017-01-23 10:39:43
【问题描述】:

以下代码用于执行批处理文件:

def GetCMD_Encoding(self):

    self.CMD = QProcess(self)
    self.CMD.setProcessChannelMode(QProcess.MergedChannels)
    self.CMD.readyReadStandardOutput.connect(self.EventDataForGetCMDEncoding)
    self.CMD.start("chcp.bat")

def EventDataForGetCMDEncoding(self):
    output = bytearray(self.CMD.readAllStandardOutput())
    output = output.decode("ascii")
    print (output)

.bat文件的内容只有:

chcp

但是如果我想排除但是文件并且我只执行简单的命令,比如:

self.CMD.start("chcp")

它不工作,并且没有发出任何类型的信号。

其他命令的工作方式如下:

self.CMD.start("ipconfig")
self.CMD.start("help")

【问题讨论】:

  • 可能可执行文件chcp 在您的PATH 中,而文件chcp.bat 不是(或不可执行)。
  • 但是chcp 是标准的CMD 命令访问没有任何路径
  • 是的,因为它在系统 PATH 中。尝试使用 bat 文件的完整路径。如果可行,则必须将此文件路径添加到系统 PATH。
  • 是的,你是对的,self.CMD.start("C:\Windows\System32\chcp.com") 工作正常!
  • 不要将批处理文件命名为内部或外部cmd 命令(如您的情况下为chcp)!

标签: qt python-3.x cmd pyqt5 qprocess


【解决方案1】:

你应该试试

  • 使用文件的完整路径chcp.bat
  • 或者将文件chcp.bat的路径添加到你的系统PATH中

并可能确保文件是可执行的。

【讨论】:

  • @ErikŠťastný 是的,就是我,提供答案而不是评论;)
  • 啊,我瞎了:)
猜你喜欢
  • 1970-01-01
  • 2011-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多