Python Forum

Full Version: How to get the name of a file only from a file path ?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
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.
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
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
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
I have made the change and it is working properly, I appreciate the help.