2016-07-25 20 views
1

Good Afternoon braucht,Mapping Fensterantriebe Python: Wie handhaben, wenn die Win cmd Line-Eingang

ich eine Version dieser Methode ein Dutzend Laufwerksbuchstaben zu kartieren:

# Drive letter: M 
# Shared drive path: \\shared\folder 
# Username: user123 
# Password: password 
import subprocess 

# Disconnect anything on M 
subprocess.call(r'net use * /del', shell=True) 

# Connect to shared drive, use drive letter M 
subprocess.call(r'net use m: \\shared\folder /user:user123 password', shell=True) 

Die obigen Code funktioniert Großartig, solange ich keinen Ordner mit einer Datei habe, die von einem Programm benutzt wird.

Wenn ich den gleichen Befehl nur in einem Cmd-Fenster ausführen und eine Datei verwendet wird, wenn ich versuche, das Laufwerk zu trennen, gibt es die Sind Sie sicher? J/N.

Wie kann ich diese Frage zurück an den Benutzer über das Py Skript übergeben (oder, wenn nichts anderes, zwingen, die trennen, so dass der Code weiter laufen?

Antwort

0

es trennen zu zwingen versuchen, mit /yes wie so

subprocess.call(r'net use * /del /yes', shell=True) 

um Ihnen die Frage an den Benutzer zu 'Umleitung' haben (mindestens) zwei mögliche Ansätze:

  • lesen und an den Standard-Ein-/Ausgangsstrom des Unterprozesses
  • Arbeit mit Exit-Codes schreiben und dem Teilprozess ein zweites Mal gestartet werden, wenn nötig

Der erste Ansatz ist sehr zerbrechlich, wie Sie lesen die Standardausgabe und interpretiere sie, die spezifisch für dein aktuelles Gebietsschema ist, und beantworte später die Frage, die auch spezifisch für dein aktuelles Gebietsschema ist (z. B. Die Bestätigung würde mit "Y" in Englisch, aber mit "J" in Deutsch usw. erfolgen.)

Der zweite Ansatz ist stabiler, da er mehr oder weniger statische Rückkehrcodes verwendet. Ich habe einen Schnelltest gemacht und im Falle der Stornierung der Frage ist der Returncode 2; im Erfolgsfall natürlich nur 0. Also mit dem folgenden Code sollten Sie in der Lage sein, die Frage zu behandeln und auf Benutzereingabe zu reagieren:

+0

Danke DAXaholic. Gibt es irgendeine Möglichkeit, die Sie wissen, um die Frage an den Benutzer zu übergeben, oder erzwingt die Trennung die einzige Möglichkeit? Das wird in 99% der Fälle gut, aber ich sehe jemanden, der Arbeit verliert, die er vergessen hat zu speichern, bevor er getrennt wird (aber andererseits sind das dieselben Leute, die wahrscheinlich auch noch Arbeit mit der Frage/Warnung verlieren würden). –

+0

Ich habe meine Antwort aktualisiert - hoffe, es hilft – DAXaholic

+0

Sie sind über und über gegangen, danke noch einmal! –