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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:44:11