Python Forum
[Tkinter] How to get the name of a file only from a file path ? - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: GUI (https://python-forum.io/forum-10.html)
+--- Thread: [Tkinter] How to get the name of a file only from a file path ? (/thread-20063.html)



How to get the name of a file only from a file path ? - DT2000 - Jul-25-2019

I have been reading and experimenting to find the proper way to remove the path of a file when selected using filedialog.askopenfile.
When I select the file (mp3) from the folder I can use a print statement to check the value of the variable, which gives:
<_io.TextIOWrapper name='C:/Users/DT2000/Documents/Python Projects/mp3 Player/music/test.mp3' mode='r' encoding='cp1252'>
I would like to strip all of the path and trailing information so that only the test.mp3 will show when it is used in a Label for the song list.

Currently I have:
def audio_file():
    global recorded_file
    recorded_file = filedialog.askopenfile(title='J.E.C. Software Solutions',
    filetypes=[('Image Files', ['.wav', '.mp3', '.vox'])])
    now_playing.insert(0,recorded_file)
    print(recorded_file)
I have been reading information about the os.path.spitext and also ntpath.split but have not seen how this can help my sistuation.

A point in the right direction would be appreciated.


RE: Stripping path before insert - Yoriz - Jul-25-2019

Using https://docs.python.org/3/library/pathlib.html

from pathlib import Path

filepath = 'C:/Users/DT2000/Documents/Python Projects/mp3 Player/music/test.mp3'

path = Path(filepath)

print(path.name)
Output:
test.mp3



RE: How to get the name of a file only from a file path ? - DT2000 - Jul-25-2019

I just found a way to do it but my attempt uses more lines of code.

Code:
def audio_file():
    global recorded_file
    recorded_file = filedialog.askopenfile(title='J.E.C. Software Solutions',
    filetypes=[('Image Files', ['.wav', '.mp3', '.vox'])])
    filepath = recorded_file
    path = Path(filepath)
    print(path.name)
Using this I receive:
expected str, bytes or os.PathLike object, not _io.TextIOWrapper



RE: How to get the name of a file only from a file path ? - Yoriz - Jul-25-2019

What is filedialog.askopenfile

Edit found a ref to it in tkinter
If it is tkinter use askopenfilename() instead
http://effbot.org/tkinterbook/tkinter-file-dialogs.htm


RE: How to get the name of a file only from a file path ? - DT2000 - Jul-25-2019

I have made the change and it is working properly, I appreciate the help.