So stellen Sie Text in die Eingabezeile ein: Wie kann man die Benutzereingabe auf der Befehlszeile anfordern und dabei eine "Standard" -Antwort geben, die der Benutzer bearbeiten oder löschen kann?

Ich schaffe ein Python-Skript, das nach Eingabe von der Befehlszeile fragt. Der Benutzer hat die Möglichkeit, einen Teil einer Datei zu bearbeiten. Ich kann nach den neuen Informationen fragen und in der Datei überschreiben, kein Problem. Aber ich hätte lieber den bearbeiteten Teil der Datei schon in die Kommandozeile gelegt, also muss man nicht ganz umschreiben. Ist das möglich?

Datei:

1|This file 2|is not empty 

Beispiel:

 >>>edit line 2 Fetching line 2 Edit the line then hit enter >>>is not empty #This is written here by the script, not by the user 

Die dann geändert werden kann

 >>>is not full either Edited file 

Afther, die die Datei geändert hat:

 1|This file 2|is not full either 

Ich hoffe, es ist klar, was ich versuche zu erreichen.

Diese Frage wurde gesagt, um meine Frage zu beantworten, es tut zu einem gewissen Grad. Es tut, wenn ich Linux mit readline . Aber ich bin nicht Ich benutze Windows und benutze keine readline . Ich möchte nur die Standardbibliothek benutzen.
Eine Antwort für Windows ist auch mit dieser Frage versehen. Allerdings bekomme ich ein ImportError mit win32console , könnte es sein, weil erwähnt Frage ist nicht über Python3.4, aber meine ist. Auch ich frage mich, ob dies mit der Standardbibliothek möglich war, nicht mit einer externen Bibliothek.

3 Solutions collect form web for “So stellen Sie Text in die Eingabezeile ein: Wie kann man die Benutzereingabe auf der Befehlszeile anfordern und dabei eine "Standard" -Antwort geben, die der Benutzer bearbeiten oder löschen kann?”

Leider weiß ich nicht, ob eine Art von input() mit Standardwert in der Standardbibliothek verfügbar ist.

Es gibt eine externe Lösung – benutze win32console wie in dieser Antwort erwähnt . Allerdings hat es zwei Fallstricke, soweit ich sehen kann. Zuerst wird der Import in einem Paket pywin32 gebündelt. Also würdest du pip install pywin32 , außer es funktioniert nicht, wegen der zweiten pitfall: die informationen über das paket pypi ist veraltet, es sagt, dass das paket mit Python 3.4 kompatibel ist …

Aber in Wirklichkeit kann es funktionieren ! Du solltest die "Download-URL" auf der Pypi-Projektseite (zB https://sourceforge.net/projects/pywin32/files/pywin32/ ) anschauen und den neuesten Build installieren. Ich habe gerade gebaut 219 für Py3.4, wie ich selbst auch diese Python-Version verwenden. Auf der Seite Installateure sind für mehrere Python-Versionen für 32bit und 64bit Windows zur Verfügung gestellt.

Auch habe ich den Code von oben verbundenen Antwort geantwortet, um in Python 3 zu arbeiten:

 import win32console _stdin = win32console.GetStdHandle(win32console.STD_INPUT_HANDLE) def input_def(prompt, default=''): keys = [] for c in str(default): evt = win32console.PyINPUT_RECORDType(win32console.KEY_EVENT) evt.Char = c evt.RepeatCount = 1 evt.KeyDown = True keys.append(evt) _stdin.WriteConsoleInput(keys) return input(prompt) if __name__ == '__main__': name = input_def('Folder name: ', 'it works!!!') print() print(name) 

Dies funktioniert auf meinem Windows-Rechner … Wenn dies nicht auf Ihrem funktioniert, können Sie die Fehlermeldung?

Du könntest es mit tkinter machen:

 from tkinter import * def enter(): global commandEntry command = commandEntry.get() # Do stuff with command commandEntry.delete(0, END) def edit_line(line): global commandEntry commandEntry.insert(0, line) root = Tk() messageVar = StringVar() messageVar.set("Enter a command:") message = Label(root, textvariable=messageVar) commandEntry = Entry(root) enterButton = Button(root, text="Enter", command=enter) root.mainloop() 

Sie sollten nur 2 Variablen haben: eine für den Standart-String, eine für String, die sich selbst ändern wird. Mögen:

 str1='Stirng that is standart' str2=str1 #it usaly will be standart string usr=input('your text goes here') if len(usr) != 0: str2=usr #and here goes code for writing string into file 
  • 'Collectstatic' Befehl schlägt fehl, wenn WhiteNoise aktiviert ist
  • Alternative zu Einheimischen () beim Drucken einer Tabelle mit einem Header
  • Extrahieren von Wörterbuchvariablennamen in einer Pythonendatei mit Regex
  • Konvertieren von Byte-String in Unicode-String
  • Machen Sie Regex Match dotfiles genau
  • Ändern des User Agent in Python 3 für urrlib.request.urlopen
  • Lesen in Dateiblock nach Block mit dem angegebenen Trennzeichen in Python
  • Warum ist "1000000000000000 in Reichweite (1000000000000001)" so schnell in Python 3?
  • Ändern Sie das Standard-Float-Druckformat
  • Ausrichten von Spalten in einer Textdatei
  • Spielen Sie einen Ton mit Python-Unterprozess und Threading
  • Python ist die beste Programmiersprache der Welt.