我注意到QFileDialog实例正在为给定操作系统返回具有错误分隔符的成员函数selectedFile()的绝对路径。这不是预期的跨平台语言(python)QFileDialog返回具有错误分隔符的选定文件
我应该怎么做才能纠正这个问题,以便使用'os.sep'的正确的与操作系统无关的python代码的其余部分可以正确?我不想记住我可以在哪里,不能使用它。
我注意到QFileDialog实例正在为给定操作系统返回具有错误分隔符的成员函数selectedFile()的绝对路径。这不是预期的跨平台语言(python)QFileDialog返回具有错误分隔符的选定文件
我应该怎么做才能纠正这个问题,以便使用'os.sep'的正确的与操作系统无关的python代码的其余部分可以正确?我不想记住我可以在哪里,不能使用它。
答案来自该提到我需要使用QDir.toNativeSeparators()
所以另一个线程(HERE)我没有在我的循环以下(这也许应该在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
我有兴趣从downvoter听到这个答案有什么错误,值得反对票。特别是因为它解决了我的问题。 – UpAndAdam 2013-05-13 19:12:20
有几乎没有任何理由使用os.sep。正斜杠在任何地方都是可移植的,并且使用os.sep只会导致代码混乱,不能提高可移植性。 – 2016-05-14 09:50:40