Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将subprocess()与包含DOS cmd的变量一起使用_Python_Subprocess_Windows Subsystem For Linux - Fatal编程技术网

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

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,

我不太擅长编程,在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\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”这样的命令。。。