Python 运行 带有 subprocess.run 和参数的 exe
Python run exe with subprocess.run and arguments
我正在尝试使用 Sumatra pdf 通过 python 脚本将 pdf 发送到标签打印机。不幸的是,指定份数和方向的双引号 ('-print-settings "landscape,1,5x"') 似乎没有正确传递。
import subprocess
arg = ['SumatraPDF.exe','-print-to-default','-silent','-exit-on-print','-print-settings "landscape,1,5x"','qrcode_and_date.pdf']
subprocess.run(arg, shell=True)
如何正确设置此命令的格式才能获得所需的结果。
非常感谢任何帮助。谢谢。
通常你应该把它作为两个单独的元素放在列表 '-print-settings'
和 '"landscape,1,5x"'
上
import subprocess
arg = [
'SumatraPDF.exe',
'-print-to-default',
'-silent',
'-exit-on-print',
'-print-settings',
'"landscape,1,5x"',
'qrcode_and_date.pdf'
]
subprocess.run(arg)
但是如果你使用shell=True
那么你应该把所有的都放在一个字符串中
import subprocess
arg = 'SumatraPDF.exe -print-to-default -silent -exit-on-print -print-settings "landscape,1,5x" qrcode_and_date.pdf'
subprocess.run(arg, shell=True)
至少在 Linux 你必须这样使用它。
顺便说一句:
你可以简单地使用 split()
import subprocess
arg = 'SumatraPDF.exe -print-to-default -silent -exit-on-print -print-settings "landscape,1,5x" qrcode_and_date.pdf'
arg = arg.split()
subprocess.run(arg) # without `shell=True`
但是如果你在 "landscape, 1, 5x"
中有空格那么它会创建包含三个元素的错误列表 '"landscape', '1', '5x"'
所以 documentation suggests to use shlex.split()
import subprocess
import shlex
arg = 'SumatraPDF.exe -print-to-default -silent -exit-on-print -print-settings "landscape,1,5x" qrcode_and_date.pdf'
arg = shlex.split(arg)
subprocess.run(arg) # without `shell=True`
我正在尝试使用 Sumatra pdf 通过 python 脚本将 pdf 发送到标签打印机。不幸的是,指定份数和方向的双引号 ('-print-settings "landscape,1,5x"') 似乎没有正确传递。
import subprocess
arg = ['SumatraPDF.exe','-print-to-default','-silent','-exit-on-print','-print-settings "landscape,1,5x"','qrcode_and_date.pdf']
subprocess.run(arg, shell=True)
如何正确设置此命令的格式才能获得所需的结果。
非常感谢任何帮助。谢谢。
通常你应该把它作为两个单独的元素放在列表 '-print-settings'
和 '"landscape,1,5x"'
import subprocess
arg = [
'SumatraPDF.exe',
'-print-to-default',
'-silent',
'-exit-on-print',
'-print-settings',
'"landscape,1,5x"',
'qrcode_and_date.pdf'
]
subprocess.run(arg)
但是如果你使用shell=True
那么你应该把所有的都放在一个字符串中
import subprocess
arg = 'SumatraPDF.exe -print-to-default -silent -exit-on-print -print-settings "landscape,1,5x" qrcode_and_date.pdf'
subprocess.run(arg, shell=True)
至少在 Linux 你必须这样使用它。
顺便说一句:
你可以简单地使用 split()
import subprocess
arg = 'SumatraPDF.exe -print-to-default -silent -exit-on-print -print-settings "landscape,1,5x" qrcode_and_date.pdf'
arg = arg.split()
subprocess.run(arg) # without `shell=True`
但是如果你在 "landscape, 1, 5x"
中有空格那么它会创建包含三个元素的错误列表 '"landscape', '1', '5x"'
所以 documentation suggests to use shlex.split()
import subprocess
import shlex
arg = 'SumatraPDF.exe -print-to-default -silent -exit-on-print -print-settings "landscape,1,5x" qrcode_and_date.pdf'
arg = shlex.split(arg)
subprocess.run(arg) # without `shell=True`