Python创建同文件夹下5个不同名称文件仅生成1个如何解决
问题原因
- 时间戳仅获取一次:你将
datetime.now()放在循环外执行,变量x存储的是程序启动瞬间的固定时间值,循环内每次生成的文件名完全一致。使用w(写入)模式打开文件时,新内容会直接覆盖原有同名文件,最终只会保留最后一次写入的结果,因此仅出现1个文件。 - 循环次数不足:初始值
a=1,循环判断条件为a < 5,实际仅会执行4次循环,即使文件名不重复也只能生成4个文件,无法满足生成5个文件的需求。 - 缺失依赖导入:原代码没有导入
datetime、os模块,直接运行会触发名称错误。 - 缩进错误:
with open行的缩进多了一个空格,不符合Python语法规范。
修复方案
将时间戳获取逻辑移到循环内部,每次生成文件时都获取最新的时间值保证文件名唯一;调整循环逻辑确保执行5次;补充依赖导入、修正缩进。
修复后的完整代码如下:
import datetime import os a = 0 path = r'C:\Users\User1\Desktop\Newfolder' # 可选:如果目标文件夹不存在则自动创建 if not os.path.exists(path): os.makedirs(path) while a < 5: a += 1 # 每次生成文件前获取最新时间戳 x = datetime.datetime.now() file_name = x.strftime('%d-%m-%Y-%H-%M-%S-%f=HDTV.txt') with open(os.path.join(path, file_name), 'w') as fp: fp.write('this is a test')
如果担心极端情况下循环执行太快导致时间戳重复,也可以在文件名中加入循环变量a进一步保证唯一性,修改文件名生成逻辑为:file_name = f'{a}_' + x.strftime('%d-%m-%Y-%H-%M-%S-%f=HDTV.txt')
内容的提问来源于stack exchange,提问作者turk
相关产品推荐
相关产品推荐

