Python 将subprocess()与包含DOS cmd的变量一起使用
我不太擅长编程,在Python中使用Python 将subprocess()与包含DOS cmd的变量一起使用,python,subprocess,windows-subsystem-for-linux,Python,Subprocess,Windows Subsystem For Linux,我不太擅长编程,在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,
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\u newlines=True)
而cmd
包含上述字符串
系统返回类似于命令wsl not found
怎么了
更新。wing中的错误消息为:
wing中的错误消息为:
文件“D:\DMS\MiniDMS.py”,第73行,在subprocess.run(cmd,
shell=True,check=True,stdout=subprocess.PIPE,
universal\u newlines=True).decode()文件“C:\Python\Lib\subprocess.py”,
第512行,运行中的raise调用的进程错误(retcode,process.args
subprocess.CalledProcessError:命令'C:\Windows\System32\wsl.exe
ocrmypdf-sr-l deu\mnt\z\dms_收件箱\Scan 2019-11-27 13.12.33.pdf
z:\dms_收件箱\OCR_扫描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”是entweder falsch
这是一个很好的例子。
这意味着找不到命令wsl.exe(即使它在那里…)
这种行为的原因是: wsl.exe是一个64位的应用程序,因此位于real system32文件夹中。由于我的python安装是一个32位的应用程序,它总是指不包含wsl.exe的SysWOW64文件夹
解决方法:我只是简单地将python安装为64位应用程序,现在它正在运行。详细信息很重要。包括整个消息,而不是“类似”错误消息。始终将问题中的完整错误消息(从单词“Traceback”开始)作为文本(而不是屏幕截图)放置。还有其他有用的信息。如果找不到,请使用
\full\path\to\wsl
错误消息是德语“类似”表示我只是翻译了它。我正在调试模式下使用wing IDE,找不到关键字“traceback”。“wsl”是“Windows子系统linux”的关键字通常在没有任何路径的DOS框中使用。我不确定它是否有路径,或者它是否是像“dir”这样的命令。。。