2017-07-03 2 views
0

Am 10. Windows Python 3.6Wie kann ich mit Python-Eingabeaufforderung Geschichte zugreifen

Lasst uns sagen, dass ich eine Eingabeaufforderung-Sitzung geöffnet (nicht Python-Eingabeaufforderung oder Python interaktive Sitzung) haben und ich habe Einrichten einer Umgebung mit vielen Konfigurationen oder etwas dieser Art. Gibt es eine Möglichkeit für mich, auf die Geschichte der Befehle zuzugreifen, die ich in dieser Sitzung mit einem Python-Modul zum Beispiel verwendet habe?

Idealerweise möchte ich diesen Verlauf in eine Datei exportieren können, damit ich ihn in Zukunft wiederverwenden kann.

Beispiel:

Typ in Eingabeaufforderung: python savecmd.py und speichert es die Geschichte von dieser Sitzung.

+2

Windows oder * nix? Sie setzen cmd, also nehme ich Windows an? – PressingOnAlways

+0

@ cᴏʟᴅsᴘᴇᴇᴅ Ich beziehe mich nicht auf die interaktive Python-Eingabeaufforderung oder den Python-Interpreter –

+0

@JonathanPorter Wenn Sie * Nix haben, können Sie 'history = open ('/ home/.bash_history'). Readlines()' und Du würdest alles von dort bekommen. Die Sache ist, ich bin nicht sicher, wie Sie es auf die aktuelle Sitzung beschränken werden. –

Antwort

2

Sie nicht Python brauchen überhaupt, verwenden doskey Einrichtungen dafür, das heißt:

doskey /history 

aus der aktuellen Sitzung des Befehlsprotokoll gedruckt wird, können Sie das in eine Datei umleiten, wenn Sie speichern möchten es:

doskey /history > saved_commands.txt 

Wenn Sie es wirklich aus Python tun möchten, können Sie subprocess.check_output() verwenden Sie den Befehl Geschichte zu erfassen und sie dann in einer Datei speichern:

import subprocess 

cmd_history = subprocess.check_output(["doskey", "/history"]) 
with open("saved_commands.txt", "wb") as f: 
    f.write(cmd_history) 
+0

Sie könnten dies in Python über ctypes ohne doskey.exe tun, und sogar besser, da Sie Unicode anstelle der Konsolen-Codepage verwenden könnten (was eine verlustbehaftete Codierung dessen ist, was Sie eingegeben haben, wenn es kein Zeichen in der aktuellen Codepage ist). Es wird jedoch nicht unterstützt, da Microsoft die von doskey.exe aufgerufenen Konsolenfunktionen nie dokumentiert hat: 'GetConsoleCommandHistoryLengthW' und' GetConsoleCommandHistoryW'. – eryksun

Verwandte Themen