lprを使用して、パスにスペースが含まれるファイルを印刷する


0

だから私の道:

/Users/work/Desktop/My Folder/My File.txt

マイフォルダーとマイファイルにはスペースがあります。もちろん、ターミナルでは、オートコンプリートのためにタブを押すとそれが行われます/Users/work/Desktop/My\ Folder/My\ File.txt

私の問題は、Pythonでそのようなパスを使用するときです:

from subprocess import Popen

def print_rc(file):
    with open(file, 'r') as infile:
        p = Popen(["lpr -o page-ranges=1-2"], stdin=infile)
        output = p.communicate()[0]

エラーがno such file or directory表示されます。私がするときos.path.exists('/Users/work/Desktop/My Folder/My File.txt')、それは判明しますTrue。だから問題はスペースに関係していると思う。

Python文字列をbashが理解できるものに変換するには、何をする必要がありますか?


いいえ、そういうわけではありません。
イグナシオバスケス-エイブラムス

Pythonからではなく、コマンドラインから直接同じファイルで 'lpr'を呼び出すのはなぜですか?プリンターはコマンドラインで印刷されます。
dearprudence

待つ!shell=Trueのコンストラクタに追加する必要がありますPopen。笑
慎重さ

コマンドラインで正しくやっているからです。
イグナシオバスケス-エイブラムス

回答:


2

subprocess.Popenシェルコマンドラインは必要ありません。exec引数の配列が必要です。

Popen(["lpr", "-o", "page-ranges=1-2"])
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.