按行读取json文件并取出单个元素
参考:http://www.jsphp.net/python/show-24-258-1.html
with open(filename, 'r') as f:
for jsonstr in f.readlines(): # 按行读取json文件,每行为一个字符串
data = json.loads(jsonstr) # 将字符串转化为列表
HoldTime = (data[0],data[3],data[6]) #取出列表中指定单个元素,这里取出了第1、4、7个,生成一个新的字符串
with open(newfile, 'a') as f:
json.dump(HoldTime, f) # 将字符串写入新的json文件中(newfile需要提前定义)
f.write('\n')
批量修改文件名称
"""
批量修改文件名称
并将对应文件名写入txt文件(不含后缀)
"""
import os
path = './val2017' # 图像文件夹
path2 = r'./val2017.txt' # txt文件路径
if os.path.exists(path2):
os.remove(path2)
file2 = open(path2, 'w')
i = 1
# 对目录下的文件进行遍历
for file in os.listdir(path):
# 判断是否是文件
if os.path.isfile(os.path.join(path, file)):
new_name = file.replace(file, "img_%d.jpg" % i) # 遍历生成新文件名
os.rename(os.path.join(path, file), os.path.join(path, new_name)) # 修改文件名
html1 = file
html2 = new_name
html1 = html1.replace('.png', '') # 删除后缀存入字符串
html2 = html2.replace('.jpg', '') # 删除后缀存入字符串
file2.writelines(html1)
file2.writelines(',' + html2)
file2.write('\n')
i += 1
# 结束
file2.close()
txt文件结果:
批量替换文件中的指定字符串
"""
批量替换文件中的指定字符串
"""
name_file = open("../val2017_name.txt", "r") # 读取上述txt文件
in_file = open("instances_val2017.json", "r", encoding='utf-8') # 需要替换的文件
out_file = open("val.json", "w") # 生成新文件
lines1 = name_file.readlines() # 逐行获取文件内容
lines2 = in_file.readlines()
for i in lines2:
for m in lines1:
m = m.split(",") # 以,分割每一行文件的前后字符串,即将字符串“A,B”分割为“A”和“B”,单个字符串m变为字符串列表
i = i.replace(m[0], m[1]) # 将A替换为B
out_file.write(i)
in_file.close()
out_file.close()
删除文件中的换行符
"""
删除文件中的换行符
"""
file = open("val.json", "r", encoding='utf-8')
out_file = open("val1.json", "w")
lines = file.readlines()
n = 0
for i in lines:
if n < 758: # 删除换行符的最后一行行数
i = i[:-1] # 删除换行符
out_file.write(i) # 写入新文件
n += 1
file.close()
out_file.close()
# 不限制行数
# file = open("train.json", "r", encoding='utf-8')
# out_file = open("train2017.json", "w")
# lines = file.readlines()
#
# n = 0
# for i in lines:
# i = i[:-1]
# out_file.write(i)
#
# file.close()
# out_file.close()
删除文件中的指定内容
"""
删除文件中的指定内容
只保留包含”img_“的所有{}内容
"""
in_file = open("val1.json", "r", encoding='utf-8')
out_file = open("val2.json", "w")
lines = in_file.readlines()
final = ""
for i in lines:
i = i.split("},") # 以{}为分类获取所有的{}内容
for n in range(0, len(i)):
i[n] += '}' # 还原}符号
if "img_" in i[n]: # 只保留包含”img_“的所有{}内容
# i[n] = i[n].replace(i[n], "")
final = final + i[n] + ', '
out_file.write(final)
in_file.close()
out_file.close()
设断点查看JSON文件
import json
TRAIN_JSON_PATH = "train2017.json"
with open(TRAIN_JSON_PATH, encoding='utf-8') as f:
train_json = json.load(f)
print(1)