Python创建文件夹及带时间戳JSON文件时遇NoneType路径错误求助
解决Python创建文件时的
expected str, bytes or os.PathLike object, not NoneType错误 咱们先揪出问题的根源:你代码里的searchResultFoder=os.mkdir("./search_result")这行踩了个小坑——os.mkdir()函数执行成功后返回的是None,要是后续你想用这个变量拼接文件路径,就会把None和字符串混在一起,传入路径参数时自然就触发类型错误了。
下面给你一套完整的修正方案,同时优化整个文件创建流程:
步骤1:导入必要模块
先确保你已经导入了需要的工具模块:
import os import json from datetime import datetime
步骤2:安全创建目标文件夹
别再用os.path.exists加os.mkdir的组合了,推荐用os.makedirs——它能递归创建多层文件夹,加上exist_ok=True参数后,就算文件夹已经存在也不会报错,省心多了:
# 确保search_result文件夹存在,不存在则自动创建 folder_path = "./search_result" os.makedirs(folder_path, exist_ok=True)
步骤3:生成符合要求的文件名
把日期格式化成你需要的年-月-日形式,再拼接成完整的文件路径:
# 获取今天的日期,格式化为不带前导零的"YYYY-M-D"(对应示例的2018-4-7) today_str = datetime.today().strftime("%Y-%-m-%-d") # 拼接文件名 file_name = f"{today_str}_searchResult.js" # 用os.path.join拼接完整路径,适配不同操作系统的路径分隔符 file_path = os.path.join(folder_path, file_name)
要是你需要带前导零的日期格式(比如2018-04-07),把格式化字符串改成
"%Y-%m-%d"就行。
步骤4:写入JSON数据
最后把你的listMetaData转成JSON字符串写入文件,用with语句还能自动帮你关闭文件,避免资源泄漏:
# 把数据转成JSON字符串,indent参数让JSON更易读(可选) jsondata = json.dumps(listMetaData, indent=4) # 写入文件 with open(file_path, "w", encoding="utf-8") as f: f.write(jsondata)
完整可运行代码示例
import os import json from datetime import datetime # 假设你的listMetaData已经定义完成 listMetaData = [{"id": 1, "content": "测试数据1"}, {"id": 2, "content": "测试数据2"}] # 确保目标文件夹存在 folder_path = "./search_result" os.makedirs(folder_path, exist_ok=True) # 生成文件名和完整路径 today_str = datetime.today().strftime("%Y-%-m-%-d") file_name = f"{today_str}_searchResult.js" file_path = os.path.join(folder_path, file_name) # 写入JSON数据 jsondata = json.dumps(listMetaData, indent=4) with open(file_path, "w", encoding="utf-8") as f: f.write(jsondata)
额外小提示
- 用
os.path.join()拼接路径比手动写字符串靠谱多了,能自动适配Windows、Linux、macOS的不同路径分隔符。 - 给
json.dumps加上ensure_ascii=False参数,还能让中文正常显示在JSON文件里。
内容的提问来源于stack exchange,提问作者Py Dev
相关产品推荐
相关产品推荐

