Seite 1 von 1

subprocess the next

Verfasst: Dienstag 13. März 2007, 23:52
von newyew
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

Verfasst: Mittwoch 14. März 2007, 00:23
von Leonidas
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.