如何用Python在脚本目录创建文件夹并在其中写入文件?
解决方案:在脚本目录创建文件夹并生成正确文件路径
你的问题主要出在两个地方:一是没有明确指定脚本所在目录作为文件夹的创建根路径,二是手动拼接路径分隔符破坏了os.path.join的逻辑,导致文件路径错误。以下是最优实现方式:
1. 先锁定脚本所在的绝对目录
直接用相对路径创建文件夹时,会在当前运行脚本的工作目录(而非脚本本身所在目录)生成文件夹。要固定在脚本目录操作,先获取脚本的绝对路径:
import os # 获取当前脚本所在的绝对目录 script_dir = os.path.dirname(os.path.abspath(__file__))
2. 简洁创建目标文件夹
不用手动检查文件夹是否存在,os.makedirs的exist_ok=True参数可以自动处理文件夹已存在的情况,同时结合脚本目录生成正确的文件夹路径:
folder_name = "TestFolder" # 拼接脚本目录与文件夹名,得到完整的文件夹绝对路径 folder_path = os.path.join(script_dir, folder_name) # 创建文件夹,已存在则跳过 os.makedirs(folder_path, exist_ok=True)
3. 正确生成文件路径
你之前手动给文件夹名加"/"的操作是错误的——os.path.join会根据操作系统自动适配路径分隔符(Windows用\,Unix/Linux用/),手动添加分隔符会导致路径拼接逻辑失效。正确写法是直接传入文件夹路径和文件名:
file_name = "your_file.txt" # 拼接文件夹路径与文件名,得到最终的文件绝对路径 file_path = os.path.join(folder_path, file_name)
4. 写入文件内容
用生成的绝对路径写入文件即可:
with open(file_path, "w", encoding="utf-8") as f: f.write("这里是要写入文件的内容")
完整可运行代码
import os # 获取脚本所在的绝对目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 创建目标文件夹 folder_name = "TestFolder" folder_path = os.path.join(script_dir, folder_name) os.makedirs(folder_path, exist_ok=True) # 生成文件路径并写入内容 file_name = "demo.txt" file_path = os.path.join(folder_path, file_name) with open(file_path, "w", encoding="utf-8") as f: f.write("成功在脚本目录的子文件夹中创建并写入文件!")
核心要点
- 始终用
os.path.join拼接路径,不要手动添加/或\,保证跨系统兼容性。 - 用
os.path.abspath(__file__)锁定脚本目录,避免当前工作目录变动导致的路径混乱。 os.makedirs(exist_ok=True)替代手动文件夹存在性检查,代码更简洁可靠。
内容的提问来源于stack exchange,提问作者Aditya
相关产品推荐
相关产品推荐

