Seite 1 von 1

Dateiname übergeben

Verfasst: Montag 1. Mai 2017, 10:25
von gahleitner
Hallo!

Ich habe mir einen Macrorecorder (mit einiger Hilfe) programmiert. Die Aufnahme funktioniert schon ganz gut, ich speichere die Macros mittels filedialog.asksaveasfilename von tkinter. Beim Ausführen des Makros mittels Button und filedialog.askopenfilename möchte ich aber noch den Dateinamen an eine Listbox übergeben. Wie mache ich das?
Bin noch Anfänger - bitte helft mir.

Re: Dateiname übergeben

Verfasst: Montag 1. Mai 2017, 10:33
von __deets__
Du musst nur an der "Stelle" den "Code" einfügen, dann klappts.

Wo stelle und Code sind weiß ich aber nicht - ich kenne deinen Code ja nicht.

Falsche Reihenfolge

Verfasst: Montag 1. Mai 2017, 14:08
von Alfons Mittelmeyer
gahleitner hat geschrieben:Beim Ausführen des Makros mittels Button und filedialog.askopenfilename möchte ich aber noch den Dateinamen an eine Listbox übergeben. Wie mache ich das?
Diese Reihnefollge paß nicht:

Falsche Reihenfolge:
- File mit Macros aussuchen.
- evtl. es in den Speicher laden,
- oder dem Makrointerpreter einen Zugriff zum Filelesen geben
- den Macrointerpreter starten
- und der soll dann den Filenamen in eine Listbox schreiben???

Der hat wahrscheinlich keine Ahnung, wie der File hieß.
Und wo die Listbox ist, davon hat er erst recht keine Ahnung. So etwas geht ihn ja auch überhaupt nichts an. Er hat nur die Macros abzuarbeiten und sonst nichts.

Richtige Reihenfolge:
- File mit Macros aussuchen
- den Filenamen in die Listbox eintragen
- den Macrointerpreter starten

Was spricht da dagegen, oder wo liegt die Schwierigkeit?

Re: Dateiname übergeben

Verfasst: Montag 1. Mai 2017, 14:42
von gahleitner
Hallo!
Naja - von einen Eingabefeld übergibt man mit Entry.get() - gibt es auch einen Befehl (command) um den dateinamen weiterzugeben? Bin noch Anfänger und weiß keinen, der das macht.

Re: Dateiname übergeben

Verfasst: Montag 1. Mai 2017, 14:55
von __deets__
Ich war wohl nicht deutlich genug - ohne deinen Code zu kennen, kann man die Frage nicht beantworten. Also bitte poste den, dafuer gibt es die tolle Code-Box die man hier direkt mittels "Code auswaehlen" benutzt.

Re: Dateiname übergeben

Verfasst: Montag 1. Mai 2017, 15:21
von Alfons Mittelmeyer
gahleitner hat geschrieben:Hallo!
Naja - von einen Eingabefeld übergibt man mit Entry.get() - gibt es auch einen Befehl (command) um den dateinamen weiterzugeben? Bin noch Anfänger und weiß keinen, der das macht.
Nein, Du mußt eine Methode haben, die Du aufrufst.

Ich habe etwa eine solche Methode implementiert, könnte auch eine Funktion sein, die einen Filedialog öffnet, und falls der File existiert, ihn lädt und ausführt, ähnlich wie Dein Macro Interpreter. Da wird doch der Filename gefunden. Und wenn er gefuinden wird, kann man ihn nach "if filename" in die Listbox schreiben.

Code: Alles auswählen

def show_load_dialog(msg,root = widget('/')):
    file_opt = options = {}
    options['defaultextension'] = '.py'
    options['filetypes'] = [('python files', '.py'), ('gui files', '.gui'), ('all files', '*')]
    options['initialfile'] = 'Backup.py'
    options['parent'] = root
    options['title'] = 'Load & Edit: ' + msg
    
    filename = tkFileDialog.askopenfilename(**file_opt)
    if filename:
Du mußt nur eine Funktion oder Methode haben, oder diese noch schreiben, die den Filenamen als Parameter übergeben kommt, und ihn dann in die Listbox einträgt. Wo ist denn da das Problem? Du rufst doch auch askopenfilename auf und bekommst dann den Filenamen.

Oder weißt Du nicht, wie man etwas in eine Listbox einträgt?

Re: Dateiname übergeben

Verfasst: Montag 1. Mai 2017, 18:10
von gahleitner
Ich habe es auch so geschrieben wie du.
mit filename=filedialog.askopenfilename(....) und mit listbox.insert(END,filename) in die Listbox übergeben. Es wird aber statt des Dateinamens eine Zahl mit einer oder zwei kommastellen in die Listbox geschrieben. Was kann da falsch sein.
Bei dem Parameter "filename" wird doch nur der Dateiname übernommen und nicht der ganze Pfad, oder?

Re: Dateiname übergeben

Verfasst: Montag 1. Mai 2017, 18:35
von Alfons Mittelmeyer
gahleitner hat geschrieben:Bei dem Parameter "filename" wird doch nur der Dateiname übernommen und nicht der ganze Pfad, oder?
Warum fragst Du das? Es gibt doch eine einfache Möglichkeit das herauszufinden, nämlich:

print(filename)

Und siehe da, es war der ganze Pfad

Wenn Du das machst:

import os

Dann bekommst Du den letzten Teil das Pfades, das ist der filename ohne auch den Directory Pfad durch:

os.path.basename(filename)

Re: Dateiname übergeben

Verfasst: Dienstag 2. Mai 2017, 07:53
von gahleitner
Vielen Dank für deine Hilfe.
Gibt es einen command um die Dateiendung wegzubekommen?

Re: Dateiname übergeben

Verfasst: Dienstag 2. Mai 2017, 08:47
von BlackJack
@gahleitner: Es gibt in `os.path` eine Funktion um den Namen und die Erweiterung zu trennen.

Re: Dateiname übergeben

Verfasst: Dienstag 2. Mai 2017, 10:07
von gahleitner
Hallo!
Ich möchte einen in der Listbox ausgewählten Eintrag mittels Entf-Taste wieder entfernen. Geht das? Wie muss ich das definieren?

Re: Dateiname übergeben

Verfasst: Dienstag 2. Mai 2017, 10:10
von gahleitner
@BlackJack Wie heißen die Funktionen in os.path - wie muß ich das definieren?

Re: Dateiname übergeben

Verfasst: Dienstag 2. Mai 2017, 10:21
von BlackJack
@gahleitner: Welche Funktionen in `os.path` zur Verfügung stehen, steht in der Dokumentation. Die Idee war ja eher das Du Dir mal anschaust was es dort alles gibt, und vielleicht auch ein bisschen in einer Python-Shell probierst. Sonst musst Du ja wegen jeder kommenden Kleinigkeit wieder nachfragen und andere für Dich die Funktionen heraus suchen lassen. ;-)

Re: Dateiname übergeben

Verfasst: Dienstag 2. Mai 2017, 13:10
von Alfons Mittelmeyer
gahleitner hat geschrieben:@BlackJack Wie heißen die Funktionen in os.path - wie muß ich das definieren?
Was fragst Du immerzu? Hast Du noch nichts von google gehört?

Geb einfach da ein: python os.path

Re: Dateiname übergeben

Verfasst: Dienstag 2. Mai 2017, 13:34
von Sirius3
@Alfons Mittelmeyer: bevor man mit google anfängt, sollte man auf python.org gehen, da findet man die Dokumentation direkt.

Re: Dateiname übergeben

Verfasst: Dienstag 2. Mai 2017, 14:52
von Alfons Mittelmeyer
Sirius3 hat geschrieben:@Alfons Mittelmeyer: bevor man mit google anfängt, sollte man auf python.org gehen, da findet man die Dokumentation direkt.
Was finde ich denn da bei python.org? Da muss python.org eingeben, dann gebe ich dort im Suchfeld ein "os.path" und dann finde ich nichts, nämlich, ich bekomme das: https://www.python.org/search/?q=os.path&submit=

Wenn ich aber in das google Suchfeld eingebe: python os.path

Und klicke dann auf das erste von google Gefundene, dann erhalte ich das Richtige: https://docs.python.org/2/library/os.path.html

Re: Dateiname übergeben

Verfasst: Dienstag 2. Mai 2017, 15:45
von wuf
Alfons Mittelmeyer hat geschrieben:Was finde ich denn da bei python.org? Da muss python.org eingeben, dann gebe ich dort im Suchfeld ein "os.path" und dann finde ich nichts, nämlich, ich bekomme das: https://www.python.org/search/?q=os.path&submit=
Du suchst nur am falschen Ort.
a) Für Python 2.7.xx
https://docs.python.org/2/
b) Für Python 3.5.xx
https://docs.python.org/3.5/

Gruss wuf :wink:

Re: Dateiname übergeben

Verfasst: Dienstag 2. Mai 2017, 16:07
von Alfons Mittelmeyer
wuf hat geschrieben:docs.python.org/3.5/
Ist mir zuviel zum Tippen. Da tippe ich doch lieber nur "python" gefolgt von dem was ich suche.

Re: Dateiname übergeben

Verfasst: Dienstag 2. Mai 2017, 16:23
von wuf
Alfons Mittelmeyer hat geschrieben:Ist mir zuviel zum Tippen. Da tippe ich doch lieber nur "python" gefolgt von dem was ich suche.
Welche Suchmaschine verwendest du?
Ich habe es auf 'Googel' & 'StartPage' mit der Eingabe 'Python os.path' versucht. Da wirst du mit einer Flut von Antworten zugedeckt! Wenn ich deine Beiträge hier in diesem Forum lese glaube ich dir nicht, dass dies für dich zu viel Tipparbeit sein kann.

Gruss wuf :wink:

Re: Dateiname übergeben

Verfasst: Dienstag 2. Mai 2017, 17:20
von Alfons Mittelmeyer
wuf hat geschrieben:Da wirst du mit einer Flut von Antworten zugedeckt! Wenn ich deine Beiträge hier in diesem Forum lese glaube ich dir nicht, dass dies für dich zu viel Tipparbeit sein kann.
Ja ganz schön schwer, wenn man von dieser Flut so erschlagen wird, dass man sich nicht entscheiden kann, was von den ersten vier Einträgen - die sind alle von docs.python.org - man nehmen soll.

Soll man nun nehmen für Python 2.7.13 oder Python 3.6.1 oder 3.3.6 oder 3.4.5?
10.1. os.path — Common pathname manipulations — Python 2.7.13 ...
The os.path module is always the path module suitable for the operating system Python is running on, and therefore ...
http://docs.python.org/2/library/os.path.html

11.2. os.path — Common pathname manipulations — Python 3.6.1 ...
The os.path module is always the path module suitable for the operating system Python is running on, and therefore ...
http://docs.python.org/3/library/os.path.html

11.1. os.path — Common pathname manipulations — Python 3.3.6 ...
To read or write files see open(), and for accessing the filesystem see the os module. The path parameters can be ...
docs.python.org > Python > 3.3.6 Documentation > The Python Standard Library > 11. File and Directory Access

11.2. os.path — Common pathname manipulations — Python 3.4.5 ...
25 Jun 2016 ... To read or write files see open() , and for accessing the filesystem see the os module. The path ...
http://docs.python.org/3.4/library/os.path..
Ist eh egal, steht sowieso dasselbe drin und ansonsten kann man dann noch immer in docs.python.orgs die Version wechseln.