Как использовать объект os.DirEntry с пандами read_csv ()? - PullRequest
1 голос
/ 04 июня 2019

Итак, я хотел бы создать новый фрейм данных из разных CSV-файлов, мой код выглядит следующим образом:

root = "/some/dir"
for folder in os.scandir(root):
        newDF = pd.DataFrame()
        for data in os.scandir(path):
            if fnmatch.fnmatch(data.name, "a_filename*"):
                temp = pd.read_csv(data, encoding = "ISO-8859-1")  # error
                newDF[list(temp)[1]] = temp[list(temp)[1]]

Но когда я пытаюсь прочитать файл CSV, я получаю следующую ошибку:

ValueError: Invalid file path or buffer object type: <class 'posix.DirEntry'>

Я просто не могу понять, как использовать экземпляр DirEntry, возвращаемый os.scandir(). Я также пытался передать data.name и os.fsdecode(data), но без удачи.

Как правильно перейти на pd.read_csv()?

1 Ответ

2 голосов
/ 04 июня 2019

DirEntry объекты определяют атрибут path, который вы можете запросить и который возвращает путь (может или не может быть полностью определен) к этому файлу .

path
Полный путь к записи: эквивалент os.path.join(scandir_path, entry.name), где scandir_path - аргумент пути scandir().

В вашем случае вам просто нужно сделать

df = pd.read_csv(data.path, encoding="ISO-8859-1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...