QFileDialog返回带有错误分隔符的选定文件

时间:2013-05-10 22:38:48

标签: python pyqt qfiledialog qdir

我注意到QFileDialog实例正在返回成员函数selectedFile()的绝对路径,该函数具有给定操作系统的错误分隔符。这不是跨平台语言(python)

所期望的

我应该怎么做才能纠正这个问题,以便我使用'os.sep'的其他与OS无关的python代码可以正确?我不想记住我能做到的地方,也不能用它。

2 个答案:

答案 0 :(得分:2)

您使用os.path.abspath功能:

>>> import os
>>> os.path.abspath('C:/foo/bar')
'C:\\foo\\bar'

答案 1 :(得分:0)

答案来自另一个线程(HERE),提到我需要使用QDir.toNativeSeparators()

所以我在循环中执行了以下操作(可能应该在我自己的pyqt中完成):

def get_files_to_add(some_directory):
  addq = QFileDialog()
  addq.setFileMode(QFileDialog.ExistingFiles)
  addq.setDirectory(some_directory)
  addq.setFilter(QDir.Files)
  addq.setAcceptMode(QFileDialog.AcceptOpen)
  new_files = list()
  if addq.exec_() == QDialog.Accepted:
    for horrible_name in addq.selectedFiles():
      ### CONVERSION HERE ###
      temp = str(QDir.toNativeSeparators(horrible_name)
      ### 
      # temp is now as the os module expects it to be
      # let's strip off the path and the extension
      no_path = temp.rsplit(os.sep,1)[1]
      no_ext = no_path.split(".")[0]
      #... do some magic with the file name that has had path stripped and extension stripped
      new_files.append(no_ext)
      pass
    pass
  else:
    #not loading  anything
    pass
  return new_files