如何每次运行脚本时创建新的JSON文件存储数据
实现每次运行脚本创建新的序列JSON文件
我来帮你搞定这个需求!你想要每次运行脚本都生成一个全新的dataN.json文件(比如data1.json、data2.json),而不是覆盖或追加到同一个文件,同时每个新文件首行固定写入Infotext,之后再写入你的Saving内容对吧?
核心思路
首先得确定当前目录下已经存在多少个dataX.json格式的文件,找到最大的编号后加1,就能得到下一个要创建的文件名。然后用这个新文件名创建文件,先写入首行的Infotext,再写入你的Saving内容。
完整代码示例
import json import os # 定义固定的首行文本 Infotext = "First name : Last name : Email" # 假设你的Saving变量已经定义好(比如从用户输入或其他逻辑获取) firstname = "Hello" lastname = "World" email = "helloworld@test.com" Saving = f"{firstname} {lastname} - {email}" # 步骤1:获取下一个文件的编号 file_numbers = [] # 遍历当前目录下的所有文件 for filename in os.listdir('.'): # 筛选出data开头、.json结尾的文件 if filename.startswith('data') and filename.endswith('.json'): # 提取文件名中的数字部分 try: # 从"data"之后(索引4)到".json"之前(索引-5)的字符串转成整数 num = int(filename[4:-5]) file_numbers.append(num) except ValueError: # 如果文件名不符合dataX.json的格式(比如dataabc.json),直接跳过 continue # 确定下一个文件编号:如果已有文件就取最大编号+1,没有就从1开始 next_file_number = max(file_numbers) + 1 if file_numbers else 1 new_filename = f"data{next_file_number}.json" # 步骤2:写入新文件 with open(new_filename, 'w') as f: # 写入首行的Infotext json.dump(Infotext, f) f.write("\n") # 写入你的Saving内容 json.dump(Saving, f) f.write("\n") # 如果需要写入多条Saving内容(比如循环生成的多个条目),可以改成这样: # with open(new_filename, 'w') as f: # json.dump(Infotext, f) # f.write("\n") # # 假设你有一个保存所有Saving内容的列表 # saving_list = [ # "Hello World - helloworld@test.com", # "Hello2 World - helloworld2@test.com", # "Hello3 World - helloworld3@test.com" # ] # for item in saving_list: # json.dump(item, f) # f.write("\n")
关键细节说明
- 编号逻辑:通过
os.listdir遍历目录,筛选符合命名规则的文件,提取数字部分来确定下一个编号,避免重复或覆盖已有文件。 - 文件写入:用
'w'模式创建新文件(如果文件不存在会自动创建),先写入固定的首行文本,再写入你的业务内容,每写完一条就换行,保证格式和你期望的一致。 - 异常处理:加入
try-except捕获不符合格式的文件名,避免因为目录里的其他类似文件名(比如data_test.json)导致编号计算出错。
内容的提问来源于stack exchange,提问作者CDNthe2nd
相关产品推荐
相关产品推荐

