QFileDialog创建中os.getenv("HOME")有什么用?
What is the use of os.getenv("HOME") in QFileDialog creation?
就像我在标题中所说的那样,我不明白 os.getenv("HOME") 在这段代码中做了什么。我正在学习一个在线网站上的课程,导师正在用 PyQt5 编写一个类似于记事本的界面。我搜索了答案,但我猜它们有点太高级了。我也不知道什么是环境变量。顺便说一句,这是我关于堆栈的第一个问题,所以请原谅任何可能的错误和不充分的信息。
def open_file(self):
file_name=QFileDialog.getOpenFileName(self,"Open File",os.getenv("HOME"))
with open(file_name[0],"r") as file:
self.writing_ar.setText(file.read())
上面的函数连接到一个按钮self.open比如self.open.clicked.connect(self.open_file)
self.writing_ar 是一个 QTextEdit object
它基本上为您获取一个环境变量并将其转换为 python 变量。
根据您共享的代码,应该有一个在 操作系统级别 定义的名为 HOME
.
的变量
在 Linux 中,可以用
完成
export HOME="something_here"
您可以通过键入
来检查该变量是否已实际定义
echo "$HOME"
在终端中。
您可以想像 os.getenv()
方法,它会将参数的值“回显”到某个变量上。
在 os.getenv('HOME')
的情况下,这是一种获取当前用户主目录的 UNIX-centric 方法,该目录存储为 environment variable per POSIX specification。典型的主目录位置是 MacOS 上的 /Users/yourname
,或 Linux 上的 /home/yourname
,或 Windows 上的 c:\Users\Your Name
——所以这就是这段代码试图查看的内容向上。
环境变量集实际上是一个 key/value 存储,将字符串映射到其他字符串,从任何程序复制到它启动的其他进程;因此,它们是在程序之间共享配置和其他信息的一种方式(尽管它只在树下共享信息,仅在进程创建时传播;child 进程所做的更改不会被其 parent 看到; child 启动后对 parent 环境的更改不会被 child) 看到。
如果您想要即使在 Windows 上也能可靠运行的东西,请考虑 os.path.expanduser("~")
。因此,您的代码可能会变成:
file_name = QFileDialog.getOpenFileName(self,
"Open File",
os.path.expanduser("~"))
另见 What is the correct cross-platform way to get the home directory in Python?
就像我在标题中所说的那样,我不明白 os.getenv("HOME") 在这段代码中做了什么。我正在学习一个在线网站上的课程,导师正在用 PyQt5 编写一个类似于记事本的界面。我搜索了答案,但我猜它们有点太高级了。我也不知道什么是环境变量。顺便说一句,这是我关于堆栈的第一个问题,所以请原谅任何可能的错误和不充分的信息。
def open_file(self):
file_name=QFileDialog.getOpenFileName(self,"Open File",os.getenv("HOME"))
with open(file_name[0],"r") as file:
self.writing_ar.setText(file.read())
上面的函数连接到一个按钮self.open比如self.open.clicked.connect(self.open_file)
self.writing_ar 是一个 QTextEdit object
它基本上为您获取一个环境变量并将其转换为 python 变量。
根据您共享的代码,应该有一个在 操作系统级别 定义的名为 HOME
.
在 Linux 中,可以用
完成export HOME="something_here"
您可以通过键入
来检查该变量是否已实际定义echo "$HOME"
在终端中。
您可以想像 os.getenv()
方法,它会将参数的值“回显”到某个变量上。
在 os.getenv('HOME')
的情况下,这是一种获取当前用户主目录的 UNIX-centric 方法,该目录存储为 environment variable per POSIX specification。典型的主目录位置是 MacOS 上的 /Users/yourname
,或 Linux 上的 /home/yourname
,或 Windows 上的 c:\Users\Your Name
——所以这就是这段代码试图查看的内容向上。
环境变量集实际上是一个 key/value 存储,将字符串映射到其他字符串,从任何程序复制到它启动的其他进程;因此,它们是在程序之间共享配置和其他信息的一种方式(尽管它只在树下共享信息,仅在进程创建时传播;child 进程所做的更改不会被其 parent 看到; child 启动后对 parent 环境的更改不会被 child) 看到。
如果您想要即使在 Windows 上也能可靠运行的东西,请考虑 os.path.expanduser("~")
。因此,您的代码可能会变成:
file_name = QFileDialog.getOpenFileName(self,
"Open File",
os.path.expanduser("~"))
另见 What is the correct cross-platform way to get the home directory in Python?