不说废话(其实是不会说 )直接上操作
-
读取文件夹中所有文件名
参考的是网上txt转bat文件运行方式:
在需要读取文件夹所有文件名的文件夹下,新建txt2bat.txt
文件,写入dir>filename.txt
将txt2bat.txt
文件后缀转换为.bat
,双击运行,即可获得一个filename.txt
文件,该文件夹所有文件名,格式一般为:创建时间 文件大小 文件名称(含后缀) -
读取json数据保存至txt文件
因为我的数据可能需要保密,这里大致展示一下json文件结构:
{"Id":xxx,"Filename":xxx,"Label":[a,b,c,d]}
每个json文件非常简单,总数有几百个,我的目标是获取Filename和对应标签,存入txt文件:
# 读取json文件关键内容至txt文件中,但是缺少判断是否为json文件
import json
import os
def readjson():
path = 'F:\\xxx\\json' # 文件夹位置
files = os.listdir(path)
label_txt = open('F:\\xxx\\json\\label_txt.txt',mode='w')
for file in files:
f = open(path + '\\'+file,mode='r',encoding='utf-8')
temp = json.loads(f.read())
for i in temp:
if temp["Label"]: # 判断Label是否为空值
Labels = ' '.join(temp["Label"])
else:
Labels = "Null"
str = temp["Filename"] + ';' + Labels # 写入txt文件
label_txt.writelines(str + '\n')
print(str) # 打印提取的数据
label_txt.close()
if __name__ == '__main__':
readjson()
我这里直接复制了打印的数据,然后将两部分数据合并贴进excel,使用数据-分列的功能,就可以很方便地拆分表格合并汇总的(给自己点个赞👍)!
- 一些报错问题记录(部分网页被我叉掉了,所以部分报错提示没存)
’gbk’ codec can’t decode byte 0xbb in position 117: illegal multibyte sequence
编解码方式有问题,在open()里添加encoding = ‘utf-8’
can only concatenate str (not “list”) to str
一开始我直接将Filename标签和Label标签拼接,但是Label标签本身是一个列表,应该先转换为字符串再拼接Filename标签内容。
can only join an iterable
Label标签中存在空值,不能使用.join(),判断然后自定义输出值
’utf-8’ codec can’t decode byte 0xc8 in position 32: invalid continuation byte
'utf-8’编解码器无法解码位置0的字节0xc8:无效的连续字节
网上说是更改为gbk编码,但这样又回到了第一个问题,所以目前还没有解决,希望集思广益。