[英]Python subprocess.run not accepting /D argument for makensis.exe
[英]Python run exe with subprocess.run and arguments
我正在嘗試使用 Sumatra pdf 將 pdf 發送到 label7 使用 Z23EEEB4347BDD256BDDZB6 腳本的打印機。 不幸的是,指定副本數和方向的雙引號 ('-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"'
錯誤列表,因此文檔建議使用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`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.