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.

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() ?

  • Wie konvertiert man wx.GetMousePosition-Koordinaten, um in ein DC passen
  • Wie schaffst du einen Button auf einem tkinter Canvas?
  • Erstellen einer Tabelle wie Struktur in Python
  • Python Zugriff auf mehrere Webseiten auf einmal
  • DestroyWindow schließt das Fenster nicht auf Mac mit Python und OpenCV
  • Ausgabe mit 'StringVar' im Python-Programm
  • So erstellen Sie einen Timer mit tkinter?
  • Einfache GUI mit Bildern
  • 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.