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

使用Python的open()函数创建文件时遭遇FileNotFoundError问题求助

问题分析与解决

核心原因

你遇到的FileNotFoundError是因为文件名里包含了斜杠(/)——这个字符在Windows/Linux/macOS系统中都是路径分隔符,系统会把05/20/24这类日期解析成05目录下的20目录,再去找24.txt,但这些目录不存在,所以触发报错。

修复方案

把日期格式里的斜杠换成合法的文件名字符(比如横杠-或点.),同时修正代码里的语法错误,优化写法:

from datetime import date  # 修正import的语法错误(原代码少了下划线)
today = date.today()
daty = today.strftime("%m-%d-%y")  # 把/替换为-,避免路径解析问题

# 示例变量(实际代码中需确保这些变量已定义)
name = "Alice"
cost_one, place_one, time_one, payment_type_one = 25.99, "Cafe X", "12:30", "Credit Card"
cost_two, place_two, time_two, payment_type_two = 12.5, "Supermarket Y", "18:15", "Cash"
cost_three, place_three, time_three, payment_type_three = 39.9, "Bookstore Z", "14:40", "PayPal"

# 用f-string简化文件名拼接
filename = f"{name}'s Expenses - {daty}.txt"

# 用with语句自动管理文件,无需手动调用close()
with open(filename, 'w') as f:
    f.write(f"{name}'s Expenses:\n")
    f.write(f"Date: {daty}\n\n")
    divider = "------------------------------------------------\n"
    f.write(divider)
    
    # 写入条目1
    f.write("Entry 1:\n")
    f.write(f"Cost - {cost_one}\n")
    f.write(f"Place - {place_one}\n")
    f.write(f"Time - {time_one}\n")
    f.write(f"Payment Type - {payment_type_one}\n")
    f.write(divider)
    
    # 写入条目2
    f.write("Entry 2:\n")
    f.write(f"Cost - {cost_two}\n")
    f.write(f"Place - {place_two}\n")
    f.write(f"Time - {time_two}\n")
    f.write(f"Payment Type - {payment_type_two}\n")
    f.write(divider)
    
    # 写入条目3
    f.write("Entry 3:\n")
    f.write(f"Cost - {cost_three}\n")
    f.write(f"Place - {place_three}\n")
    f.write(f"Time - {time_three}\n")
    f.write(f"Payment Type - {payment_type_three}\n")
    f.write(divider)

额外注意事项

  • 文件名禁止使用系统保留字符:/ \ : * ? " < > |,建议用-、.、_作为分隔符
  • 用with语句操作文件更安全,能自动释放资源,避免忘记关闭文件导致的问题
  • f-string相比传统字符串拼接,代码可读性和维护性更强

内容的提问来源于stack exchange,提问作者Spacen64

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:45:21