【发布时间】:2020-03-29 07:16:40
【问题描述】:
我正在尝试将 xlsx 文件列表转换为 csv 格式。目前我已经能够使用 xlrd 和 csv 执行此操作,但使用以下代码逐个文件:
import xlrd
import csv
def csv_from_excel():
wb = xlrd.open_workbook(r"C:\Users\jonathon.kindred\Desktop\RM - USE\2018\JUL 2018\RM 2018-07-30.xlsx")
sh = wb.sheet_by_name('RM')
csv_file = open('RM 2018-07-30.csv', 'w', newline='')
wr = csv.writer(csv_file, quoting=csv.QUOTE_ALL)
for rownum in range(sh.nrows):
wr.writerow(sh.row_values(rownum))
csv_file.close()
csv_from_excel()
import pandas as pd
import numpy as np
df = pd.read_csv('RM 2018-07-30.csv', index_col= 0, encoding = 'iso-8859-1')
df2 = df[['Purchase Order','SKU','Markdown','Landed Cost','Original Price','Current Sale Price','Free Stock','OPO','ID Style','Supplier Style No']]
df2.to_csv(r"C:\Users\jonathon.kindred\Desktop\RM\2018\JUL 2018\RM 2018-07-30.csv", index = False)
我需要能够逐个文件夹而不是逐个文件地执行此文件夹。我已经设法使用 glob 获取下一个文件夹的列表,见下文:
import glob
path = r"C:\Users\jonathon.kindred\Desktop\RM - USE\2018\AUG 2018"
files = [f for f in glob.glob(path + "**/*.xlsx", recursive=True)]
for f in files:
print(f)
问题是我发现很难将两个脚本结合起来,以便遵循以下步骤:
- 将 .xlsx 转换为 csv
- 仅选择这些列“采购订单”、“SKU”、“降价”、“到岸成本”、“原价”、“当前销售价格”、“免费库存”、“OPO”、“ID 样式”、 '供应商风格编号'
- 将其放入我的其他文件夹中。
这两个文件夹是; xlsx 位置:RM - USE 和目标位置:RM。
【问题讨论】:
-
您应该将文件名作为 csv_from_excel 函数的参数传递。如果您正确列出了文件名,那么最后一个 for 中的 f 值应该是一个有效的文件名。将其传递给您的函数。