Python 从打开的文件中获取文件名,而不是文件路径

Python 从打开的文件中获取文件名,而不是文件路径,python,pyqt,pyqt5,qtmultimedia,Python,Pyqt,Pyqt5,Qtmultimedia,假设我使用文件对话框在PyQt5应用程序中打开了一个名为file1.mp3的文件,并将其分配给如下变量: song = QFileDialog.getOpenFileName(self, "Open Song", "~", "Sound Files (*.mp3 *.ogg *.wav *.m4a)") print(song[0]) url = QUrl.fromLocalFile(song[0]) self.playlist.addMedia(QMediaContent(url)) impo

假设我使用文件对话框在PyQt5应用程序中打开了一个名为file1.mp3的文件,并将其分配给如下变量:

song = QFileDialog.getOpenFileName(self, "Open Song", "~", "Sound Files (*.mp3 *.ogg *.wav *.m4a)")
print(song[0])
url = QUrl.fromLocalFile(song[0])
self.playlist.addMedia(QMediaContent(url))
import os
filepath = QFileDialog.getOpenFileName(self, "Open Song", "~", "Sound Files (*.mp3 *.ogg *.wav *.m4a)")[0]
print(filepath)
filepath = os.path.normpath(filepath)
song = filepath.split(os.sep)
url = QUrl.fromLocalFile(filepath)
self.playlist.addMedia(QMediaContent(url))
self.<statusbarname>.showMessage("Now playing {0} song or whatever and it was at {1} folder".format(song, filepath))

如何获取文件名而不是文件路径,以便在状态栏中显示?或者更好的是,我是否可以使用或创建一个类似“正在播放”的函数?

编程不是魔术,您有一个文件路径,即: c://myfolder/song.mp3-假设音乐文件以歌曲命名,则必须解析歌曲名称的url,并将状态栏标题/标签设置为当前播放的歌曲。我建议您在混合使用qt框架之前先学习python入门级lvl课程。

。你只需要把绳子切成薄片。因为你在学习,所以我会用错误的方式来切分,让你找出原因

filepath = QFileDialog.getOpenFileName(self, "Open Song", "~", "Sound Files (*.mp3 *.ogg *.wav *.m4a)")[0]
filename = filepath.split("/")[-1]

print(filename)
之后,您可以简单地使用

self.<statusbarname>.showMessage("Now playing {0} song or whatever".format(filename))
整个代码应如下所示:

song = QFileDialog.getOpenFileName(self, "Open Song", "~", "Sound Files (*.mp3 *.ogg *.wav *.m4a)")
print(song[0])
url = QUrl.fromLocalFile(song[0])
self.playlist.addMedia(QMediaContent(url))
import os
filepath = QFileDialog.getOpenFileName(self, "Open Song", "~", "Sound Files (*.mp3 *.ogg *.wav *.m4a)")[0]
print(filepath)
filepath = os.path.normpath(filepath)
song = filepath.split(os.sep)
url = QUrl.fromLocalFile(filepath)
self.playlist.addMedia(QMediaContent(url))
self.<statusbarname>.showMessage("Now playing {0} song or whatever and it was at {1} folder".format(song, filepath))
导入操作系统
filepath=QFileDialog.getOpenFileName(self,“打开歌曲”,“~”,“声音文件(*.mp3*.ogg*.wav*.m4a)”)[0]
打印(文件路径)
filepath=os.path.normpath(filepath)
song=filepath.split(os.sep)
url=QUrl.fromLocalFile(文件路径)
self.playlist.addMedia(QMediaContent(url))
self..showMessage(“正在播放{0}首歌曲或其他内容,它位于{1}文件夹中”。格式(歌曲,文件路径))

获取文件名有几种简单方法:

  • 使用
    QUrl

  • 使用
    QFileInfo

  • 使用
    pathlib

  • 使用
    os

或:


为什么不在字符串上使用split来分隔“/”和“.”字符之间的短语。我知道如何在普通python中分割路径,但我的PyQt程序将路径转换为QUrl。os.path.split在QUrl上是否也能以同样的方式工作?抱歉,我仍在学习PyQt。
song, _ = QFileDialog.getOpenFileName(self, "Open Song", "~", "Sound Files (*.mp3 *.ogg *.wav *.m4a)")
print(song)
url = QUrl.fromLocalFile(song)
self.playlist.addMedia(QMediaContent(url))
filename = QFileInfo(song).fileName()
your_statusbar.showMessage("now playing {}".format(filename))
song, _ = QFileDialog.getOpenFileName(self, "Open Song", "~", "Sound Files (*.mp3 *.ogg *.wav *.m4a)")
print(song)
url = QUrl.fromLocalFile(song)
self.playlist.addMedia(QMediaContent(url))

from pathlib import Path    

filename = Path(song).name
your_statusbar.showMessage("now playing {}".format(filename))
song, _ = QFileDialog.getOpenFileName(self, "Open Song", "~", "Sound Files (*.mp3 *.ogg *.wav *.m4a)")
print(song)
url = QUrl.fromLocalFile(song)
self.playlist.addMedia(QMediaContent(url))

import os   

filename = song.rstrip(os.sep)
your_statusbar.showMessage("now playing {}".format(filename))
song, _ = QFileDialog.getOpenFileName(self, "Open Song", "~", "Sound Files (*.mp3 *.ogg *.wav *.m4a)")
print(song)
url = QUrl.fromLocalFile(song)
self.playlist.addMedia(QMediaContent(url))

import os   

_ , filename = os.path.split(os.sep)
your_statusbar.showMessage("now playing {}".format(filename))