1、单个txt文件转换:1.txt处理
import csv
#转换函数
def txt2csv(txtfile,savecsv):
csvFile = open(savecsv,'w',newline='',encoding='utf-8')
writer = csv.writer(csvFile)
csvRow = []
f = open(txtfile,'r',encoding='GB2312')
for line in f:#按行读取
csvRow = line.split()
writer.writerow(csvRow)
f.close()
csvFile.close()
if __name__ == '__main__':
txtfile = "E:/QA/txt2csv/介电/实验一/1.txt"
savecsv = "E:/QA/txt2csv/介电/实验一/1.csv"
txt2csv(txtfile,savecsv)
记录:
line.split():拆分字符串。用法及示例
小结:注意读取位置和存储位置,合理使用缩进。中间出现的一个问题是误操作将1.txt变成空文件0kb,导致输出的1.csv始终为空,百思不得其解,直到。。和上一次C#中sql语句少写一个逗号在心梗程度上有异曲同工之妙,长点心长点心长点心。成功转换如下:
2、多个txt文件转换:x.txt处理
import csv
import os
def txt2csv(txtfile,savecsv):
csvFile = open(savecsv,'w',newline='',encoding='utf-8')
writer = csv.writer(csvFile)
csvRow =[]
f = open(txtfile,'r',encoding='GB2312')
for line in f:
csvRow = line.split()
writer.writerow(csvRow)
f.close()
csvFile.close()
def get_txtfiles(root):
txtfiles = os.listdir(root)
files = []
for txtfile in txtfiles:
if txtfile.endswith('.txt'):
files.append(os.path.join(root,txtfile))
return files
if __name__ == '__main__':
# root = "E:/QA/txt2csv/介电/实验一"
root = '实验一'
txtfiles = get_txtfiles(root)
print(txtfiles)
for i,txt in enumerate(txtfiles,start=1):
txt2csv(txt,os.path.join(root,'{}.csv'.format(i)))
记录:
enumerate函数:start=1
小结:批处理重要的是路径问题。|| 批处理其实和单个文件处理是一样的,首先获取输入列表,然后遍历列表,然后在执行一次就好了。|| 要熟悉os和列表,字符串相关操作
还有其他方法,比如说直接获取原文件名字,然后修改后缀。|| 对于那些不是数字的名字,或者数字不连续的就不适用了。|| 改后缀方法有很多都能实现,os模块有函数可以用,也可以用字符串分隔方法。这里使用的是字符串拼接。名字+后缀
3、多个txt文件转换:x-y.txt处理
【问题记录】
相关连接:1、