我的编程能力不强,在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(即使它存在...)
此行为的原因:wsl.exe是64位应用程序,因此位于实际的system32文件夹中。由于我的python安装是32位应用程序,因此它始终引用不包含wsl.exe的SysWOW64文件夹。
解决方法:我只是将python安装为64位应用程序,现在可以正常工作。