Wie bekomme ich einen String aus dem tkinter filedialog in Python 3?

Ich versuche, den tkinter filedialog zu verwenden, um die Benutzerwahl einer Datei in meinem Python 3.4 Programm zu erhalten.

Früher habe ich versucht, den Gtk FileChooserDialog zu benutzen, aber ich laufe weiter in die Wand nach der Wand, die es zur Arbeit bringt ( hier ist meine Frage dazu .) Also ich habe versucht, auf Tkinter umzustellen und den Dateidialog zu benutzen.

  • Überraschende Ergebnisse mit Python timeit: Counter () vs defaultdict () vs dict ()
  • Warum ändert sich die Liste ohne Grund?
  • In Python, wie man einen String, der eine Reihe von Keyword-Argumenten, so dass die Reihenfolge spielt keine Rolle
  • Entpacken von Dateien in Python
  • So senden Sie das Passwort nach Benutzernamen in der Eingabeaufforderung mit python
  • Japanisch in Pythonfunktion
  • Hier ist der Code, den ich für die GUI verwende:

     import tkinter from tkinter import filedialog root = tkinter.Tk() root.withdraw() path = filedialog.askopenfile() print(type(path)) # <- Not actually in the code, but I've included it to show the type 

    Es funktioniert einwandfrei, außer der Tatsache, dass es ein <class '_io.TextIOWrapper'> Objekt anstelle eines Strings <class '_io.TextIOWrapper'> , wie ich es erwartet habe.

    Das Aufrufen von str() auf das funktioniert nicht, und auch nicht mit dem io Modul Funktion getvalue() .

    Weiß jemand, wie ich den gewählten Dateipfad als String aus der filedialog.askopenfile() ?

  • Python Requests, wie man an jede Quelle IP für jede Anfrage zu binden?
  • Gibt es einen besseren Weg, um Wörterbuch-Werte zu vergleichen
  • Brauchen Sie Hilfe bei der Berechnung der geographischen Distanz
  • Python sum () Funktion mit Listenparameter
  • Wie implementiere ich einen effizienten unendlichen Generator von Primzahlen in Python?
  • Python: Konvertieren von timedelta in int in einem dataframe
  • One Solution collect form web for “Wie bekomme ich einen String aus dem tkinter filedialog in Python 3?”

    Ich bin sicher, es gibt mehrere Möglichkeiten, aber was ist mit path.name ? Dies sollte ein String sein.

     print("type(path):", type(path)) # <class '_io.TextIOWrapper'> print("path:", path) # <_io.TextIOWrapper name='/some/path/file.txt' mode='r' encoding='UTF-8'> print("path.name:", path.name) # /some/path/file.txt print("type(path.name):", type(path.name)) # <class 'str'> 

    Beachten Sie, dass askopenfile die Datei im Lesemodus standardmäßig öffnet und zurückgibt. Wenn Sie nur den Dateinamen wollen und planen, es später zu öffnen, versuchen Sie es mit askopenfilename stattdessen. Sehen Sie diesen Link für mehr:

    Zuerst müssen Sie entscheiden, ob Sie eine Datei öffnen wollen oder einfach nur einen Dateinamen erhalten möchten, um die Datei auf eigene Faust zu öffnen. Im ersten Fall solltest du tkFileDialog.askopenfile () im letzteren Fall tkFileDialog.askopenfilename () verwenden.

    Python ist die beste Programmiersprache der Welt.