У меня есть код Python, который преобразует несколько файлов .xlsx в .csv. Но он помещает их в одну папку. Как изменить этот код, чтобы убедиться, что он помещает файлы .csv в отдельную папку?

import pandas as pd
import glob
excel_files = glob.glob('C:/Users/username/Documents/TestFolder/JanuaryDataSentToResourcePro/*.xlsx') # assume the path
for excel in excel_files:
    out = excel.split('.')[0]+'.csv'
    df = pd.read_excel(excel, 'ResourceProDailyDataset') # if the sheet name is always the same.
    df.to_csv(out) 
0
Serdia 23 Фев 2018 в 06:18

3 ответа

Лучший ответ

Разделите каталог по имени файла, а затем присвойте out новый каталог:

for excel in excel_files:
    folder = r'C:\ASeparateFolder\'
    out = folder + excel.split('\\')[-1].split('.')[0]+'.csv'
    df = pd.read_excel(excel, 'ResourceProDailyDataset') # if the sheet name is always the same.
    df.to_csv(out)

Обратите внимание, что я использовал '\\' для разделения, кажется, что это общая точка разделения для glob, используете ли вы '\' или '/' для вашего начального каталога excel_file.

1
r.ook 23 Фев 2018 в 04:30

Вы можете изменить переменную, которая управляет вашим выходным файлом. Попробуйте что-то вроде этого

out = 'some_directory/' + excel.split('.')[0]+ '.csv'

Каталог должен существовать, чтобы это работало.

0
Burgan 23 Фев 2018 в 03:31

Сначала разделите путь, удалите ненужную папку и замените ее другой папкой.

import pandas as pd
import os
import glob
excel_files = glob.glob('C:/Users/username/Documents/TestFolder/JanuaryDataSentToResourcePro/*.xlsx') # assume the path
# folder name for the converted csv files
different_folder = "csv_folder"
for excel in excel_files:
    # make a csv path
    csv_folder_path =  "\\".join(excel.split('\\')[:-1])+"\\"+different_folder+"\\"
    if not os.path.exists(csv_folder_path):
        # create it if it doesn't exist
        os.makedirs(csv_folder_path)
    # full path of the csv file
    out = csv_folder_path+excel.split('\\')[-1].split('.')[0]+'.csv'
    df = pd.read_excel(excel, 'ResourceProDailyDataset') # if the sheet name is always the same.
    df.to_csv(out) 

Это создаст новую папку csv_folder во всех папках, в которых есть файл Excel, и преобразованные файлы csv будут помещены в эту папку.

1
abybaddi009 23 Фев 2018 в 04:57