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

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

问题描述

假设我使用文件对话框在 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))

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

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

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

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