Python创建CSV文件:循环获取非重名文件名的实现求助
解决Python生成唯一CSV文件的循环逻辑问题
你的两段代码存在的问题:
- 第一段代码仅做单次判断,文件存在时仅提示但不会重新请求用户输入,无法实现「循环获取输入直到得到不存在文件名」的需求。
- 第二段代码嵌套while逻辑混乱:外层循环在文件不存在时创建文件,随后进入内层循环,但此时文件已存在,内层循环会反复请求输入却无正确退出条件,逻辑完全错误。
正确的实现逻辑是:循环请求用户输入日期和课程名称,生成文件名后检查是否存在。若文件已存在,提示用户并重新输入;若不存在,创建文件并结束循环。
以下是修正后的代码:
import os def create_csv_file(): while True: # 获取用户输入 class_day = input("请输入课程日期: ") class_name = input("请输入课程名称: ") # 生成CSV文件名 filename = f"{class_name}{class_day}.csv" # 检查文件是否存在 if os.path.exists(filename): print(f"文件 {filename} 已存在,请重新输入。") else: # 使用with语句创建文件,自动关闭,避免资源泄漏 with open(filename, 'w', encoding='utf-8') as f: # 可在此添加CSV表头,比如: # f.write("姓名,学号,成绩\n") pass print(f"文件 {filename} 已成功创建。") break # 完成创建,退出循环 # 调用函数执行逻辑 create_csv_file()
代码说明:
- 用
while True构建无限循环,直到文件创建成功后通过break退出。 - 避免使用全局变量,将变量封装在函数内部,符合编程规范。
- 采用
f-string拼接文件名,比直接字符串相加更清晰易读。 - 使用
with语句操作文件,无需手动调用close(),更安全可靠。 - 可根据需求在创建文件时添加CSV表头内容,自行修改注释部分即可。
内容的提问来源于stack exchange,提问作者Nasur
相关产品推荐
相关产品推荐

