subprocess the next

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
newyew
User
Beiträge: 1
Registriert: Dienstag 13. März 2007, 23:18

Hi,
ich habe ein kleines Problem mit dem Modul subprocess. Ich möchte mittels
eines externen Programms Dateien verschlüsseln. Wenn ich folgenden Code
verwende, dann bekomme ich die Fehlermeldung "ccrypt: cannot open /dev/tty".

Code: Alles auswählen

import subprocess

cmd = ['./bin/ccrypt','-e','test.pdf']
##cmd = ['ls','-l']
process = subprocess.Popen(cmd, 
                    shell=False, 
                    stdout=subprocess.PIPE, 
                    stderr=subprocess.PIPE, 
                    stdin=subprocess.PIPE)
print process.stdout.read()
print process.stderr.read()

Verwende ich zum Test "cmd = ['ls','-l']" funktioniert alles. Das Programm
ccrypt wartet eigentlich auf die Eingabe eines Keys, welchen ich mit
process.stdin.write() übergeben möchte. Ccrypt wird aber leider nicht
ausgeführt.

Kommandozeile von ccrypt:

lars@machine:~/Desktop/crypto$ ccrypt -e test.pdf
Enter encryption key:
Enter encryption key: (repeat)

Vielleicht hat jemand eine Idee.
Lars
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo newyew, willkommen im Forum,

Das problem liegt daran, dass ccrypt ein Pseudo-Terminal erwartet, subprocess aber keines liefert.

Am besten du siehst dir den Thread "pty -- Pseudoterminals" an, dort geht es um das gleiche Problem. Oder du suchst im Forum nach "pexpect", das liefert auch einige Treffer.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten