PyQt5中创建QFileDialog时os.getenv("HOME")的作用是什么?
PyQt5 QFileDialog参数及环境变量说明
1. QFileDialog.getOpenFileName第三个参数的作用
这个参数的作用是指定文件选择弹窗的默认打开路径,你传入什么路径,用户点击打开按钮弹出的文件选择框就会默认定位到该路径下,省去用户逐层跳转目录的操作。如果该参数留空,弹窗会默认定位到系统上次打开文件的路径或者默认文档目录。
2. 环境变量与os.getenv("HOME")含义
- 环境变量是操作系统全局维护的配置变量,所有运行在当前系统上的程序都可以读取,用来存储通用的系统配置,比如用户主目录路径、临时文件存储路径、可执行程序搜索路径等。
os.getenv("HOME")是Python os标准库的方法,作用是读取系统中名为HOME的环境变量的值:- Linux、macOS系统下
HOME默认对应当前登录用户的个人主目录,格式为/home/用户名 - Windows系统下没有默认的
HOME环境变量,对应主目录的环境变量是USERPROFILE,格式为C:\Users\用户名
- Linux、macOS系统下
兼容性优化建议:如果要让代码兼容Windows系统,可以把第三个参数修改为
os.getenv("HOME") or os.getenv("USERPROFILE"),避免Windows下读取HOME返回空值的问题。
可选代码优化
你当前的代码如果用户点击了文件选择框的「取消」按钮,file_name[0]会是空字符串,直接调用open()会触发报错,同时打开中文文件容易出现编码乱码问题,可以做如下优化:
def open_file(self): file_name = QFileDialog.getOpenFileName(self, "Open File", os.getenv("HOME")) # 仅在用户选中了文件时执行读取操作 if file_name[0]: # 指定utf-8编码避免中文乱码 with open(file_name[0], "r", encoding="utf-8") as file: self.writing_ar.setText(file.read())
内容的提问来源于stack exchange,提问作者Utkan P.
相关产品推荐
相关产品推荐

