在数据测试时,需要把一个文件下的无数个txt一个一个的转为csv文件中一个单元格的元素,如果手动转所需工作量太大,所以选择用代码来解决。
因为我做这个文件转换时 文件名是下面这种类型:
首先批量修改文件名我需要将这些文本文件的数据排序输入csv文件中,所以我先把_后面的数字去掉,但我发现它排序是用string来排序的,这样排序结果回事1,10,100,1000.....和我所要求的不同,所以在不满五位数之前添0,变为00001,00002....即可。
改变后的文件名。
import os
pos_name = os.listdir('neg')
for temp in pos_name:
i,j = temp.split('_')
if len(i) < 5:
num = 5 - len(i)
i = num * '0' + i
new_name = i+'.txt'
print(new_name)
os.rename('neg/'+temp,'neg/'+new_name)
接下来把文件读入并写入。
wr()函数是用来将数据写入csv的,mode=‘a+’就是往csv中添加元素。header是指定列名。
import pandas as pd
import os
import codecs
def wr(path):
data=codecs.open(path,encoding='utf-8')
data2 = pd.DataFrame(data)
data2.to_csv('test.csv', index=False, mode='a+', header=False)
data.close()
path1 = 'pos' # 指定需要读取文件的目录
files = os.listdir(path1) # 采用listdir来读取所有文件
files.sort() # 排序
for file_ in files: # 循环读取每个文件名
if not os.path.isdir(path1 + file_): # 判断该文件是否是一个文件夹
f_name = str(file_)
path = r'pos\{0}'.format(f_name)
print(path)
wr(path)
这样就能的到想要的csv文件了,但是在csv中查看时会出现编码错误,我暂时没有找到解决办法,不过在PyCharm中并没有出错。