【问题标题】:Convert files from different paths using Python使用 Python 从不同路径转换文件
【发布时间】:2022-08-22 05:13:05
【问题描述】:

我正在尝试从不同的路径转换 Excel 文件,但它只转换路径列表中最后一个路径中的文件。

循环遍历列表中的路径以获取要转换的文件的正确方法是什么?

import pandas as pd
import glob, os
import csv, json
import openpyxl
from pathlib import Path


list_path = Path(\"excel_files/PLM\", \"excel_files/PTR\", \"excel_files/TMR\")
for xlsx_file in glob.glob(os.path.join(list_path,\"*.xlsx*\")):
    data_xls = pd.read_excel(xlsx_file, \'Relatório - DADOS\', index_col=None, engine = \'openpyxl\')
    csv_file = os.path.splitext(xlsx_file)[0]+\".csv\"
    data_xls.to_csv(csv_file, encoding=\'utf-8\', index=False)

    标签: python excel loops csv path


    【解决方案1】:

    Path("excel_files/PLM", "excel_files/PTR", "excel_files/TMR") 返回单个路径,而不是路径列表:

    >>> Path("excel_files/PLM", "excel_files/PTR", "excel_files/TMR")
    PosixPath('excel_files/PLM/excel_files/PTR/excel_files/TMR')
    

    老实说,我不确定它为什么会找到任何文件。

    相反,您可能必须执行另一个循环 - 例如:

    for path in ["excel_files/PLM", "excel_files/PTR", "excel_files/TMR"]:
        for xlsx_file in glob.glob(os.path.join(path, "*.xlsx*")):
            ...
    

    【讨论】:

    • 嗨@jfschaefer,谢谢。如何将生成的文件发送到同一个文件夹?它现在将每个文件转换为 excel 所在的根文件夹,但我需要它们位于同一个文件夹中,但与根目录不同。
    • 我想你可以在data_xls.to_csv(csv_file, ...) 中做点什么,比如data_xls.to_csv(os.path.join('your_new_root', path, csv_file), ...)。但如果文件夹不存在,它可能会抱怨。
    • 或者,如果您想在同一个文件夹中,data_xls.to_csv(os.path.join(path, csv_file), ...) 应该可以
    • 你好。他正在将根路径附加到我给出的保存路径中。而且,就像你说的返回错误“不存在的目录:'csv_files\excel_files\PLM'”
    • 您可以手动创建它或在Path(os.path.join('your_new_root', path, csv_file)).mkdir(exist_ok=True) 之前的行中执行
    猜你喜欢
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 2017-11-22
    • 2019-02-11
    • 2019-01-30
    • 2011-09-05
    相关资源
    最近更新 更多