QFileDialog 不解析符号链接
QFileDialog not resolving symlinks
opt = QFileDialog()
folder = QFileDialog.getExistingDirectory(self, "choose folder", path, options=opt.ShowDirsOnly)
这是我在文件浏览器中 select 文件夹的代码。
默认情况下它应该能够解析 symlinks。但我没有看到这种行为。
我select的文件夹是/home/user/abc,它是link到/home/user/xyz的符号。
>> print(f'Folder is: {folder}')
Folder is: /home/user/abc
>> print(f'Folder is: {os.path.realpath(folder)}')
Folder is: /home/user/xyz
是否可以通过 getExistingDirectory() 方法获取实际路径 (/home/user/xyz) 而无需稍后使用 os.path.realpath()?
在 Linux 中不可能,在 windows 中解决了符号 link。
QFileDialog 使用 QFileSystemModel 作为 QTreeView 模型,并默认启用 resolveSymlinks 属性 来完成这项工作,但正如 the docs 指出的那样:
resolveSymlinks : bool
This property holds whether the directory model
should resolve symbolic links
This is only relevant on Windows.
By default, this property is true.
Access functions:
bool resolveSymlinks() const
void setResolveSymlinks(bool enable)
(强调我的)
opt = QFileDialog()
folder = QFileDialog.getExistingDirectory(self, "choose folder", path, options=opt.ShowDirsOnly)
这是我在文件浏览器中 select 文件夹的代码。 默认情况下它应该能够解析 symlinks。但我没有看到这种行为。
我select的文件夹是/home/user/abc,它是link到/home/user/xyz的符号。
>> print(f'Folder is: {folder}')
Folder is: /home/user/abc
>> print(f'Folder is: {os.path.realpath(folder)}')
Folder is: /home/user/xyz
是否可以通过 getExistingDirectory() 方法获取实际路径 (/home/user/xyz) 而无需稍后使用 os.path.realpath()?
在 Linux 中不可能,在 windows 中解决了符号 link。
QFileDialog 使用 QFileSystemModel 作为 QTreeView 模型,并默认启用 resolveSymlinks 属性 来完成这项工作,但正如 the docs 指出的那样:
resolveSymlinks : bool
This property holds whether the directory model should resolve symbolic linksThis is only relevant on Windows.
By default, this property is true.
Access functions:
bool resolveSymlinks() const
void setResolveSymlinks(bool enable)
(强调我的)