2015-03-23 3 views
0

Следующему скрипту Python задается задача сделать снимок, а затем распечатать его. Тем не менее, каждый раз после того, как сценарий успешно вызывает Л.П., сценарий завершается (чисто, без исключения или объяснения)Вызов lp из Python приводит к тому, что сценарий заканчивается

import time 
import picamera 
import subprocess 

def main(): 
    with picamera.PiCamera() as cam: 
     cam.start_preview(alpha=220) 
     #cam.resolution = (2592, 1944) 
     cam.capture('test.jpg') 
    subprocess.check_call("lp -d HP-270 test.jpg") 

while True: 
    main() 
    time.sleep(5.000) 

ответ

0

Try отделяя свой вызов LP и ее аргументы в виде списка строк. Вот как вы передаете свою команду и аргументы в оболочку, по умолчанию subprocess.check_call не интерпретирует интерпретатор необработанной строки, которую вы ему передаете.

subprocess.check_call(["lp", "-d", "HP-270", "test.jpg"])

Subprocess library: Frequently Used Arguments

арг требуется для всех вызовов и должен быть строкой, или последовательность аргументов программы. Обычно требуется> , так как он позволяет модулю следить за любыми требуемыми экранированием> и цитированием аргументов (например, для разрешения пробелов в файлах имен). Если передать одну строку, либо оболочка должна быть True (см. Ниже ), либо строка должна просто называть программу, которая должна быть выполнена без указания каких-либо аргументов.

+0

Это интересно, так как вызов на самом деле успеха, как это - я постараюсь его и пусть вы знаете! –

+0

Ну, я пробовал это - и, к сожалению, проблема осталась. То, что я закончил, - это просто перенос вызова печати на отдельный скрипт, поскольку вызов другого скрипта позволил мне не беспокоиться о завершении первого сценария –

Смежные вопросы