亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 subprocess.Popen 中為“pstops”指定參數的問題

在 subprocess.Popen 中為“pstops”指定參數的問題

胡子哥哥 2022-07-05 19:24:30
從命令行發出此命令:pdftops -paper A4 -nocenter opf.pdf - | pstops "1:[email protected](0.5cm,13.5cm)" > test.ps工作正常。我試圖將其轉換為參數列表,subprocess.Popen如下所示:import subprocess as sppath = 'opf.pdf'ps = sp.Popen(            ["pdftops",             "-paper", "A4",             "-nocenter",             "{}".format(path),             "-"],            stdout = sp.PIPE)pr = sp.Popen(            ["pstops",             "'1:[email protected](0.5cm,13.5cm)'"],            stdin = ps.stdout,            stdout = sp.PIPE)sp.Popen(            ["lpr"],            stdin = pr.stdout )文件名在哪里path- opf.pdf。這會在第二個中產生錯誤Popen:0x23f2dd0age specification error:  pagespecs = [modulo:]spec  spec      = [-]pageno[@scale][L|R|U|H|V][(xoff,yoff)][,spec|+spec]                modulo >= 1, 0 <= pageno < modulo(原文如此)。我懷疑0x23f2dd0不知何故取代了“P”。無論如何,我懷疑問題出在頁面規范 1:[email protected](0.5cm,13.5cm) 中,所以我嘗試使用/不使用單引號,并使用(轉義)雙引號。我什至嘗試shlex.quote了它產生了一個非常奇特''"'"'1:[email protected](0.5cm,13.5cm)'"'"''的,但仍然是同樣的錯誤。這是什么原因造成的?編輯作為最后一個資源,我嘗試了:    os.system(("pdftops -paper A4 -nocenter {} - | "               "pstops '1:[email protected](1cm,13.5cm)' | "               "lpr").format(path))效果很好。不過,我仍然更喜歡上述Popen解決方案。
查看完整描述

1 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

想想 shell 對那個參數做了什么(或者用類似的東西printf '%s\n'讓它告訴你)。我們需要撤消 shell 引用并將其替換為 Python 引用(這恰好非常相似):


pr = sp.Popen(

            ["pstops",

             "1:[email protected](0.5cm,13.5cm)"],

            stdin = ps.stdout,

            stdout = sp.PIPE)


查看完整回答
反對 回復 2022-07-05
  • 1 回答
  • 0 關注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號