Python выдает ошибку, что файл не существует, когда он явно - PullRequest
1 голос
/ 08 октября 2019

Я сейчас пытаюсь прочитать некоторые текстовые файлы как Pandas DataFrames, и программа продолжает выдавать ошибку, что файл не существует.

Код, который я написал:

import os

import pandas as pd


cwd = os.getcwd()

path1 = os.path.join(cwd, 'sub1/sub2/sub3')
path2 = os.path.join(cwd, 'sub1/sub2/sub3')

files = []
for f in list(os.listdir(path1)):
    files.append(pd.read_csv(f))

Когда я запускаю этот код, я получаю:

FileNotFoundError: [Errno 2] File b'text_file.txt' does not exist: b'text_file.txt'

, что довольно странно, потому что когда я запускаю os.listdir(path1), я получаю имя всех файлов с включенным text_file.txt. Кроме того, я заметил, что когда я на самом деле перехожу в каталог, где находится текстовый файл, программа запускается без проблем.

Есть ли что-то, что я в принципе делаю неправильно? Спасибо.

Ответы [ 2 ]

2 голосов
/ 08 октября 2019

Вы должны присоединиться к пути, так как только имя файла будет предполагать, что оно относительно вашего cwd.

files = []
for f in list(os.listdir(path1)):
    fullpath = os.path.join(path1, f)
    files.append(pd.read_csv(fullpath))

Сказав, что я бы рекомендовал использовать pathlib в качествеоблегчает обработку пути к файлу(и панд поддерживает прием объекта Path)

from pathlib import Path

import pandas as pd

path1 = Path(__file__).parent / 'sub1' / 'sub2' / 'sub3'
files = []
for f in path.glob('*'):
    files.append(pd.read_csv(f))
1 голос
/ 08 октября 2019

Ну, это довольно просто:

1) Вы можете использовать полный путь, что-то вроде /Users/mikhailgenkin/code/text_file.txt. В этом случае не имеет значения, из какого места вы пытаетесь прочитать файл (до тех пор, пока вы запускаете скрипт python со своего локального компьютера).

2) Вы можете использовать относительный путь, text_file.txt,В этом случае вы должны запустить код (или запустить исходный файл Python) по тому же пути. Существуют и другие возможности, например, если ваш входной файл на один уровень выше вашего исходного файла, вы должны использовать ../text_file.txt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...