使用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
相关产品推荐
相关产品推荐

