【问题标题】:How to convert a folder full of .csv files into .xlsx files with Python?如何使用 Python 将充满 .csv 文件的文件夹转换为 .xlsx 文件?
【发布时间】:2021-06-10 18:17:53
【问题描述】:

情况:我有一个充满 .csv 文件(超过 100 个)的文件夹,我想使用 for 循环将其转换为单独的 .xlsx 文件。我尝试了以下代码,但遇到了一些问题/疑问

import pandas as pd
import os

for file in os.listdir("M:\example_path\csv"):
    if file.endswith('.csv'):
        # print(file)
        read_file = pd.read_csv(file)
        read_file.to_excel("M:\example_path\csv", index=None, header=True)

问题 1:我从 read_file 收到错误 FileNotFoundError: [Errno 2] No such file or directory,但 print(file) 可以列出该文件夹中的所有 .csv 文件。

问题2:如果我想给每个转换后的.xlsx文件与.csv文件同名(即将a.csv转换为a.xlsxb.csv转换为b.xlsx等),我应该如何实现这个?

感谢您的帮助!

【问题讨论】:

  • 您忘记加入路径。 file_path = os.path.join("M:\example_path\csv", file).
  • @Mercury 你的意思是我应该在read_file 之前添加file_path = os.path.join("M:\example_path\csv", file) 并更改为pd.read_csv(file_path) 吗?
  • 是的。任何不在当前工作目录中的文件都需要完整路径才能加载。
  • @Mercury 好的,谢谢您的帮助。你对第二个问题也有想法吗?
  • 更改后缀:filename.split('.')[0] + '.xlsx'

标签: python pandas csv xlsx


【解决方案1】:

作为替代方案,您可以使用glob.glob(),这样您就可以匹配.csv 文件。 os.path.splitext() 可用于帮助创建合适的输出文件名:

import pandas as pd
import os
from glob import glob

for csv_file in glob(r"M:\example_path\csv\*.csv"):
    print(csv_file)
    df = pd.read_csv(csv_file)
    xlsx_file = os.path.splitext(csv_file)[0] + '.xlsx'
    df.to_excel(xlsx_file, index=None, header=True)

另外不要忘记在文件路径前添加r 以停止Python 解析\ 字符。

【讨论】:

    猜你喜欢
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    相关资源
    最近更新 更多