You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 00:40:38