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

标签 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))

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

最佳答案

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

  • 使用QUrl:

song, _ = QFileDialog.getOpenFileName(self, "Open Song", "~", "Sound Files (*.mp3 *.ogg *.wav *.m4a)")
print(song)
url = QUrl.fromLocalFile(song)
self.playlist.addMedia(QMediaContent(url))
your_statusbar.showMessage("now playing {}".format(url.fileName()))
  • 使用QFileInfo:

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))

关于python - 从打开的文件中获取文件名,而不是文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49217347/

相关文章:

python - 按一列分组并计算 Pandas 中的多个类别

python - 在 Python 中从数组创建字典

python - 如何从 QTableWidget 项目中获取选定的标题标签?

python - PyQt5 通过 .setPlainText 将变量设置为文本编辑小部件

python - PyQtGraph:通过绘制数据切片发出循环

Python:如何拥有不从 0 开始的嵌套 for 循环索引?

multithreading - 根据导入包(PyQt5)中打印的标准输出更新 PyQt 进度条

python - PySide 自定义选项卡

python - PyQt、SQLAlchemy - 奇怪的插入崩溃

python - 通过 Tkinter 关闭/打开绘图