Как я уже сказал в заголовке, я не понимаю, что делает 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.

0
Utkan P. 9 Окт 2021 в 21:23

2 ответа

Лучший ответ

В случае os.getenv('HOME') это UNIX-ориентированный способ получить домашний каталог текущего пользователя, который хранится как переменная среды согласно спецификации POSIX . Типичное расположение домашнего каталога - /Users/yourname в MacOS, /home/yourname в Linux или c:\Users\Your Name в Windows - вот что пытается найти этот код.

Набор переменных среды фактически представляет собой хранилище ключей / значений, отображающее строки в другие строки, которое копируется из любой программы в другие процессы, которые она запускает; таким образом, они являются способом обмена конфигурацией и другой информацией между программами (хотя он передает информацию только вниз по дереву; изменения, сделанные дочерним процессом, не видны его родительскому процессу).

Если вам нужно что-то, что надежно работает везде, включая Windows, рассмотрите вариант os.path.expanduser("~"). Таким образом, ваш код может стать:

file_name = QFileDialog.getOpenFileName(self,
                                        "Open File",
                                        os.path.expanduser("~"))

См. Также Что такое правильный кроссплатформенный способ получить домашний каталог в Python?

1
Charles Duffy 9 Окт 2021 в 18:48

Он в основном получает для вас переменную среды и преобразует ее в переменную python.

Из кода, которым вы поделились, должна быть определена переменная на уровне операционной системы с именем HOME.

В Linux это можно сделать с помощью

export HOME="something_here"

Вы можете проверить, действительно ли эта переменная была определена, набрав

echo "$HOME"

В терминале.

Вы можете думать о методе os.getenv() как о "отражении" значения этого аргумента некоторой переменной.

0
lucascavalcante 9 Окт 2021 в 18:33