正如我在标题中所说,我不明白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对象
在os.getenv('HOME')
的情况下,它是一种以UNIX为中心的方式来获取当前用户的主目录,该目录根据POSIX规范存储为环境变量。一个典型的主目录位置是在MacOS上的/Users/yourname
,在Linux上是/home/yourname
,在Windows上是c:UsersYour Name
——所以这就是本文试图查找的内容。
环境变量集实际上是一个键/值存储,将字符串映射到其他字符串,从任何程序复制到它启动的其他进程;因此,它们是在程序之间共享配置和其他信息的一种方式(尽管它只在树下共享信息,只在进程创建时传播;子进程所做的更改不会被其父进程看到;子进程启动后对父进程环境的更改也不会被子进程看到)。
如果您想要在Windows上也能可靠工作的东西,请考虑os.path.expanduser("~")
。因此,您的代码可能会变成:
file_name = QFileDialog.getOpenFileName(self,
"Open File",
os.path.expanduser("~"))
另请参阅在Python中获取主目录的正确跨平台方式是什么?
它基本上为您获取一个环境变量,并将其转换为python变量。
根据您共享的代码,应该在操作系统级别定义一个名为HOME
的变量。
在Linux中,这可以通过完成
export HOME="something_here"
您可以通过键入来检查该变量是否已实际定义
echo "$HOME"
在终端中。
你可以把CCD_ 8方法想象成";回声";某个变量的参数值。