Двойная обратная косая черта для filepath_or_buffer с pd.read_csv - PullRequest
0 голосов
/ 31 января 2019

Python 3.6, ОС Windows 7

Я пытаюсь прочитать .txt, используя pd.read_csv(), используя относительный путь к файлу.Итак, из pd.read_csv () API проверил, что аргумент filepath может быть любым допустимым строковым путем.

Итак, чтобы определить относительный путь, я использую модуль pathlib.Я определил относительный путь как:

df_rel_path = pathlib.Path.cwd() / ("folder1") / ("folder2") / ("file.txt")
a = str(df_rel_path)

Наконец, я просто хочу использовать его для подачи pd.read_csv() как:

df = pd.read_csv(a, engine = "python", sep = "\s+")

Однако я просто получаю сообщение об ошибке«Нет такого файла или каталога: ...» с двойной обратной косой чертой в пути к папке.

Я попытался вручную написать путь к pd.read_csv () с использованием необработанной строки, то есть с использованием r"relative/path".Тем не менее, я все еще получаю тот же результат, двойная обратная косая черта.Я что-то пропускаю?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Вам нужно имя файла для вызова pd.read_csv.В примере «a» является единственным путем и не указывает на конкретный файл.Вы можете сделать что-то вроде этого:

df_rel_path = pathlib.Path.cwd() / ("folder1") / ("folder2")
a = str(df_rel_path)
df = pd.read_csv(a+'/' +'filename.txt')

С именем файла, ваш код работает для меня (в Windows 10):

df_rel_path = pathlib.Path.cwd() / ("folder1") / ("folder2")/ ("file.txt")
a = str(df_rel_path)
df = pd.read_csv(a)
0 голосов
/ 31 января 2019

Вы можете получить то, что хотите, используя os module

df_rel_path = os.path.abspath(os.path.join(os.getcwd(), "folder1", "folder2"))

Таким образом, модуль os будет обрабатывать соединение частей пути с соответствующим разделителем.Вы можете опустить os.path.abspath, если вы читаете файл, который находится в том же каталоге, но я написал его для полноты.

Для получения дополнительной информации обратитесь к этому вопросу SO: Найти текущий каталог и файлкаталог

...