#python #python-3.x #path
#python #python-3.x #путь
Вопрос:
Я читаю файл на другом компьютере. Следовательно, мне нужно получить доступ к полному пути к файлу. Итак, я попытался использовать модуль pythons Pathlib:
a_path = '/dir1/subdir1/sample.txt'
home = str(Path.home())
a_path = str(home) str(a_path)
По-видимому, приведенный выше код возвращает мне полный путь. Однако, когда я читаю это, я получаю:
FileNotFoundError: [Errno 2] No such file or directory: "/home/user'/dir1/subdir1/sample.txt'"
Как я могу исправить вышеуказанную ошибку? возможно, при конкатенации у меня возникают проблемы.
Комментарии:
1. Если вы используете
pathlib.Path
, используйте/
для объединения путей. Например.a_path = Path.home() / a_path
. Не уверен, что проблема здесь в этом. Кажется, в вашем path есть дополнительные одинарные кавычки?2. Когда вы получаете ошибку? В каком коде?
3. Я не смог воспроизвести вашу ошибку, не могли бы вы предоставить больше информации?
4. да, я получаю дополнительные кавычки в моем path @Nathan. Я также попробовал
/
и получаю Posix, который я не могу прочитать5. Пожалуйста, обновите вопрос полным кодом, который вы запускаете, чтобы получить ошибку, включая чтение файла. Вам также необходимо сообщить нам о содержимом (соответствующей части) вашего домашнего каталога. Я не понимаю, как код, который вы опубликовали выше, мог привести к пути, указанному вами в ошибке (мало того, что пути отличаются, но там должны быть дополнительные кавычки).
Ответ №1:
Попробуйте это. Здесь используется os.path.join, который соединяет два пути вместе
import os
import pathlib
a_path = 'dir1/subdir1/sample.txt'
home = str(pathlib.Path.home())
print(os.path.join(home, a_path))
#/home/user/dir1/subdir1/sample.txt
Комментарии:
1. Обновлено соответствующим образом
2. что
print(home)
выводит для вас3. Проблема в том, как он устанавливает
a_path
, а неhome
как он их соединяет.4. Также вы можете запустить ls по указанному вами пути к файлу и также предоставить выходные данные
5. Тогда вам не нужно это дополнительное
/
, если вы используете os.path.join для объединения путей
Ответ №2:
Вы можете использовать join
для вставки строки вместе.
''.join([str(Path.home()), 'path\t.txt'])
Комментарии:
1. я все еще получаю дополнительную цитату, это та же проблема
2. Проблема не имеет ничего общего с тем, как он соединяет вещи, это с тем, как он устанавливает
a_path
.3. Я даже не получаю эту дополнительную цитату, поскольку в OP упоминается вывод. (Я сейчас на Windows)
Ответ №3:
Прежде всего, '/dir1/subdir1/sample.txt'
это абсолютный путь. Если вы хотите, чтобы это был относительный путь (что, похоже, так и есть), вам следует использовать 'dir1/subdir1/sample.txt'
, поэтому без начала /
.
Используя библиотеку pathlib, это становится очень простым
>>> from pathlib import Path
>>> a_path = "dir1/subdir1/sample.txt"
>>> a_path = Path.home() / a_path
>>> print(a_path)
/home/pareto/dir1/subdir1/sample.txt
Опять же, убедитесь, что вы не используете абсолютные пути. В противном случае вы получили бы следующее
>>> print(Path.home() / "/dir1/subdir1/sample.txt")
/dir1/subdir1/sample.txt