subprocess.Popen
não quer uma linha de comando do shell. Quer uma matriz de argumentos do exec:
Popen(["lpr", "-o", "page-ranges=1-2"])
Então, meu caminho:
/Users/work/Desktop/My Folder/My File.txt
Minha pasta e meu arquivo têm espaços. É claro que, no Terminal, quando você seleciona o preenchimento automático, ele faz /Users/work/Desktop/My\ Folder/My\ File.txt
.
Meu problema é quando eu uso esse caminho em 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]
Eu recebo um erro que no such file or directory
error. Quando eu faço os.path.exists('/Users/work/Desktop/My Folder/My File.txt')
, isso resulta em True
. Então eu acho que o problema tem a ver com os espaços.
O que eu preciso fazer para converter a string python em algo que o bash possa entender então?
subprocess.Popen
não quer uma linha de comando do shell. Quer uma matriz de argumentos do exec:
Popen(["lpr", "-o", "page-ranges=1-2"])