Я создал аккаунт только для того, чтобы уточнить несоответствие, которое я нашел в первоначальном ответе Русса.
Для справки, его оригинальный ответ был:
import os
script_dir = os.path.dirname(__file__)
rel_path = "2091/data.txt"
abs_file_path = os.path.join(script_dir, rel_path)
Это здоровоответ, потому что он пытается динамически создать абсолютный системный путь к нужному файлу.
Кори Моухортер заметил, что __file__
- это относительный путь (он также есть в моей системе) и предложил использовать os.path.abspath(__file__)
.os.path.abspath
, однако, возвращает абсолютный путь вашего текущего скрипта (то есть /path/to/dir/foobar.py
)
Чтобы использовать этот метод (и как я в итоге получил его работу), вы должны удалить имя скрипта в концепуть:
import os
script_path = os.path.abspath(__file__) # i.e. /path/to/dir/foobar.py
script_dir = os.path.split(script_path)[0] #i.e. /path/to/dir/
rel_path = "2091/data.txt"
abs_file_path = os.path.join(script_dir, rel_path)
Результирующий путь abs_file_path (в этом примере) становится: /path/to/dir/2091/data.txt