in os.path mehrere Dateien öffnen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
gahleitner
User
Beiträge: 35
Registriert: Montag 1. Mai 2017, 09:57

Hallo!

Mit folgenden Zeilen habe ich einen Ordnerdialog, wo ich eine datei nach der anderen aussuchen kann.

Code: Alles auswählen

filename_left = filedialog.askopenfilename(defaultextension="jpg", filetypes=[("jpg-Dateien", '.jpg'), ("Alle Dateien", '.*')], title="Laden...")
name_left = os.path.basename(filename_left)
Wie kann ich mehrere Dateien (mit STRG oder alle mit STRG+A) auswählen? ist dies möglich?

Tschüss
Gerhard
BlackJack

@gahleitner: Schau mal was für Funktionen das `tkinter.filedialog`-Modul noch so bietet.
gahleitner
User
Beiträge: 35
Registriert: Montag 1. Mai 2017, 09:57

Hallo!
Vielen Dank. Aber irgedwie komme ich nicht dahinter wie ich diese mehrere dateien auch in eine Listbox übernehmen kann. Hier noch der Code, der schon funktioniert - aber sobald ich den wert multiple auf True setze, funktioniert es nicht mehr.

Code: Alles auswählen

   def loadFile():
        global dateiname_left,a_left

        filename_left = filedialog.askopenfilename(multiple=False,initialdir="Z:\Daten Gahleitner Gerhard\Fotos",defaultextension="jpg", filetypes=[("jpg-Dateien", '.jpg'), ("Alle Dateien", '.*')], title="Laden...")
        name_left = os.path.basename(filename_left)
        dateiname_left=name_left[:int(len(name_left)-4)]	
        a_left.append(dateiname_left)
        listbox_left.delete(0,END)
        print(a_left)

        for dateiname_left in a_left:
            listbox_left.insert(END, dateiname_left)

			
    button_load_files = Button(root, text = "Dateien laden", command = loadFile)
    button_load_files.grid(row=0,column=0,sticky=W )
    frame_left.grid()
BlackJack

@gahleitner: Was heisst „funktioniert nicht mehr“?
gahleitner
User
Beiträge: 35
Registriert: Montag 1. Mai 2017, 09:57

Hallo!
Wenn multiple auf False steht, kann ich eine Datei in die Listbox übernehmen. Wenn ich aber multiple auf True setze, kann ich weder eine noch mehrere Dateien in die Listbox übernehmen - mein Ziel wäre es, eine oder mehrere Dateien (in einem Rutsch) in die Listbox übernehmen zu können. Geht das überhaupt? Meiner Meinung müsste ich erreichen, die Liste a_left um mehrere Dateien (dateiname_left) zu erweitern, oder liege ich da falsch?
BlackJack

@gahleitner: Was heisst „kann ich weder eine noch mehrere Dateien in die Listbox übernehmen“? Falls Du das nicht von einer Konsole aus startest, solltest Du das mal tun.
gahleitner
User
Beiträge: 35
Registriert: Montag 1. Mai 2017, 09:57

Hallo!
Ich machte es immer in der Eingabeaufforderung mit python, dann Pfad angeben. So hat auch immer alles funktioniert.
Wenn multiple auf False steht, kann ich auch mehrere Dateien in die Listbox einfügen - aber nur einzeln, eine nach der anderen. Ich möchte aber gerne mehrere Dateien aus dem Filedialog auf einmal in die Listbox einfügen. Ist das möglich?

tschüss
Gerhard
BlackJack

@gahleitner: Ich meinte das GUI-Programm: Das musst Du so starten das Du auch die Ausnahmen sehen kannst die Dein Code auslöst und ausgibt.

Und ja, das ist natürlich möglich mehr als eine Datei auszuwählen. Sonst wäre die Option ja sinnlos. ;-)
gahleitner
User
Beiträge: 35
Registriert: Montag 1. Mai 2017, 09:57

Hallo!
Nun ja, ich weiß nicht so genau, was du meinst bzw. wie du das meinst.
wenn ich eine Datei eingebe, bekomme ich folgende Fehlermeldung: cannot concatenate 'str' and 'tuple' objects
bei mehreren Dateien folgende: 'tuple' object has no attribut 'replace'; jeweils in Zeile: name_left=os.path.basename(filename_left).
Leider bin ich noch ein ziemlicher Anfänger - tut mir leid.
BlackJack

@gahleitner: Schau Dir die Zeile mal an und dann vergleiche das was diese Funktion als Argument erwartet und was Du tatsächlich übergibst.
Antworten