Как прочитать файл и вывести файл с таким же именем в другую подпапку, используя pathlib.Path (). Glob () - PullRequest
3 голосов
/ 01 апреля 2020

Как мне прочитать файлы и вывести файлы с такими же именами файлов в другую подпапку, используя pathlib.Path().glob()?

Мой каталог выглядит так:

New Folder 1

-> p1_a.csv

-> p1_b.csv

-> New Folder 2

Код:

from pathlib import Path
import pandas as pd

file_path = r'C:\Users\HP\Desktop\New Folder 1'

for fle in Path(file_path).glob('p1_*.csv'):
   df = pd.read_csv(fle)

   # do something with df

   df.to_excel(file_path + r'\New Folder 2' + 'p1_*.csv' + '_new.csv')

Бит кода, в котором я не уверен: 'p1_*.csv'.

После запуска кода мой каталог должен выглядеть следующим образом:

New Folder 1

-> p1_a.csv

-> p1_b.csv

-> New Folder 2

-> -> p1_a.csv_new.csv

-> -> p1_b.csv_new.csv

Что мне нужно иметь в бите 'p1_*.csv', чтобы у новых файлов, скопированных в Новой папке 2, были те же имена файлов, что и у исходного файла?

Заранее большое спасибо.

Ответы [ 2 ]

2 голосов
/ 01 апреля 2020

По сути то же самое, что и Шубхам, без вызова модуля os:

for fle in Path(file_path).glob('p1_*.csv'):
    df = pd.read_csv(fle)

   # do something with df
   new_location = Path(file_path).parent.joinpath('New Folder 2', f'{fle}_new.csv')
   df.to_excel(new_location)
2 голосов
/ 01 апреля 2020

Попробуйте это:

import os
import pandas as pd
from pathlib import Path

source_dir = r'C:/Users/HP/Desktop/New Folder 1'

for path in Path(source_dir).glob('p1_*.csv'):
   df = pd.read_csv(path)
   # TODO: do something with df

   filename = os.path.basename(path) #--> gets the file name
   dest_path = os.path.join(source_dir, "New Folder 2", f"{filename}_new.csv")

   df.to_csv(dest_path)

Теперь ваша структура каталогов будет выглядеть так:

New Folder 1
├── New Folder 2
│   ├── p1_a.csv_new.csv
│   └── p1_b.csv_new.csv
├── p1_a.csv
└── p1_b.csv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...