PyQt5-从打开的文件而不是文件路径中获取文件名 [英] PyQt5 - Get file name from an opened file, not a file path

查看:1258
本文介绍了PyQt5-从打开的文件而不是文件路径中获取文件名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Let's say I opened a file called file1.mp3 in a PyQt5 app using the file dialog and assigned it to a variable like this:

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

如何获取文件名而不是文件路径,以便可以在statusBar中显示它?甚至更好的是,我可以使用或创建类似正在播放"的功能吗?

How can I get the file name instead of a file path so I can display it in a statusBar? Or even better, is there a "now playing"-like function I could use or create?

推荐答案

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

There are several simple ways to get the name of a file:

  • 使用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:
    • Using 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))
      

      • 使用pathlib:
        • Using pathlib:
        • 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))
          

          • 使用os:
            • Using os:
            • 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))
              

              这篇关于PyQt5-从打开的文件而不是文件路径中获取文件名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆