日常有用到过,记录一下方便下次再用,也顺便分享给有需要的人交流学习,
如有错误请多多指教~
批量读取某个路径下的所有txt文件中的每一行字符串,将其作为csv文件的表头,并保存。
我的思路大致如下:
txt_path = 'G:\\2022\\TXT' # txt_path 这个路径下全部txt文件
save_csv_path = 'G:\\2022\\output.csv' # save_csv_path 是生成的csv文件保存路径,格式是【路径+新生成的csv文件名】
def generate_csv_from_txt(txt_path, save_csv_path):
header = [] # 作为表头
fs = os.listdir(txt_path)
for f in fs:
with open(os.path.join(txt_path,f), 'r', encoding='UTF-8') as input_file:
lines = input_file.readlines()
# print(len(lines))
for line in lines :
header.append(line) # 每一行添加到header中
# print("len(header) == ", len(header))
# 将header写入csv并保存为文件
with open(save_csv_path, 'a+', newline='') as save_csv:
writer = csv.writer(save_csv)
writer.writerow(header)
一些小细节,根据情况添加更改。
a. 遍历路径下所有文件,根据文件后缀,判断当前文件是否为.txt文件,是txt文件则进行操作。
def test_2(path):
for root, dir, fs in os.walk(path): # 遍历path中所有文件和文件夹及其所含文件。
for f in fs:
if f.endswith('.txt') :
# 打开文件
with open(os.path.join(path,f), 'r', encoding='UTF-8') as input_file:
# None #自己想要的操作
也看到有根据编码方式判断是否为文本文件的,文章链接如下:
b. 已知表头前两个的固定元素,只添加txt文件第二行以后的每一行。
def generate_csv_from_txt_2(txt_path, save_csv_path):
header.append('column01')
header.append('column02')
for root, dir, fs in os.walk(txt_path):
for f in fs:
with open(os.path.join(txt_path,f), 'r', encoding='UTF-8') as static_file:
lines = static_file.readlines() # 读取所有行
for line in lines[2:]: # 只从第二行开始
if line not in header: # 只添加header中没有的行
header.append(line)
# 保存为csv文件
with open(save_csv_path, 'a+', newline='') as save_csv:
writer = csv.writer(save_csv)
writer.writerow(header)