将subprocess()与包含DOS-cmd的变量一起使用

问题描述 投票:0回答:1

我的编程能力不强,在Python中使用subprocess()命令时遇到问题。我的程序创建以下字符串:

wsl ocrmypdf -sr -l deu "\mnt\z\dms\_inbox\Scan 2019-11-27 13.12.33.pdf" "z:\dms\_inbox\OCR_Scan 2019-11-27 13.12.33.pdf"

如果我在Windows 10 DOSbox中使用此命令,它将正常工作。

现在,我想使用以下Python命令启动它:

subprocess.run(cmd, shell=True, check=True, stdout=subprocess.PIPE, universal_newlines=True).decode()

虽然cmd包含上述字符串。

系统返回类似command wsl not found的内容。

怎么了?

更新。机翼中的错误消息是:机翼中的错误消息是:

文件“ D:\ DMS \ MiniDMS.py”,第73行,位于subprocess.run(cmd,shell = True,check = True,stdout = subprocess.PIPE,Universal_newlines = True).decode()文件“ C:\ Python \ Lib \ subprocess.py”,第512行,在运行中引发CalledProcessError(retcode,process.args,

subprocess.CalledProcessError:命令'C:\ Windows \ System32 \ wsl.exeocrmypdf -sr -l deu \ mnt \ z \ dms_inbox \ Scan 2019-11-27 13.12.33.pdfz:\ dms_inbox \ OCR_Scan 2019-11-27 13.12.33.pdf'返回了非零退出状态1。

我认为字符串中缺少一些引号。所以我将其更改为

C:\Windows\System32\wsl.exe ocrmypdf -sr -l deu "\mnt\z\dms\_inbox\Scan 2019-11-27 13.12.33.pdf" "z:\dms\_inbox\OCR_Scan 2019-11-27 13.12.33.pdf"

错误输出现在是:

Der Befehl“ C:\ Windows \ System32 \ wsl.exe”和错误geschrieben oder konnte nicht gefunden werden。这意味着找不到命令wsl.exe(即使它存在...)

python subprocess windows-subsystem-for-linux
1个回答
0
投票

此行为的原因:wsl.exe是64位应用程序,因此位于实际的system32文件夹中。由于我的python安装是32位应用程序,因此它始终引用不包含wsl.exe的SysWOW64文件夹。

解决方法:我只是将python安装为64位应用程序,现在可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.