为什么 QFileDialog 使用斜杠而不是反斜杠?

6

为什么“\”和“/”混用?

os.getcwd() 返回反斜杠字符串。

而另一方面,QFileDialog 返回正斜杠字符串。

为什么会这样呢?

示例

请执行此示例代码。

from PySide import QtGui
from PySide import QtCore
import sys
import os

class DirectoryPrinter(QtGui.QWidget):
    def __init__(self,parent=None):
        super(DirectoryPrinter,self).__init__(parent=None)

        self.filedialog_pushbutton = QtGui.QPushButton("filedialog",self)
        self.connect(self.filedialog_pushbutton,QtCore.SIGNAL("clicked()"),self.filename_getter)

    def filename_getter(self):
        print("from os.getcwd()",os.getcwd())
        filename = QtGui.QFileDialog.getOpenFileName(self,"Select your file",os.path.expanduser("~"))[0]
        print("from QFileDialog",filename)


def main():
    try:
        QtGui.QApplication([])
    except Exception as e:
        print(22,e)
    directoryprinter = DirectoryPrinter()
    directoryprinter.show()

    sys.exit(QtGui.QApplication.exec_())
if __name__ == "__main__":
    main()

结果(在我的情况下)

os.getcwd() 返回: J:\

QFileDialog 返回: C:/Users/******/setup.py

这段文字是关于IT技术的。
2个回答

7

1
事实上,我是从 PySide 文档中的 QDir 类中发现了这个结果。但是你提供的信息包含了大量的知识,非常有用。谢谢。 - Haru

2
这是Qt的一个设计决定,而Python使用系统的路径约定。如果您想使用Qt本身进行转换,可以使用以下方法:
QtCore.QDir.toNativeSeparators(filename)

*注意:Python使用系统的约定,一些函数在Windows上处理正斜杠。如果您在Python中构建自己的路径,请查看Python标准库中的Pathlib

提示:如果使用pathlib构建,最简单的选项是不使用 Path.joinpath()将目录与文件名连接起来。改为使用斜杠作为运算符:
from pathlib import Path
dirpath = Path(r'Avoid\Using\Hardcoded\Paths')
filename = dirpath / "basename.ext"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接