如何从子文件夹运行Python文件并自动检测上级文件夹路径编辑数据
自动捕获Folder路径的解决方案
当然可以自动获取Folder的路径,不用每次改名都手动修改代码!我们可以利用Python的os.path模块,从你的脚本文件(Y.py)的位置出发,自动推导Folder的路径,完全不用硬编码路径字符串。
核心思路
你的文件结构是:
D:\Folder\ ├─ Sub Folder\ │ └─ Y.py └─ 1.html
Y.py在Sub Folder里,而Folder是Sub Folder的父目录。所以我们可以通过以下步骤自动获取Folder的路径:
- 获取Y.py的完整路径
- 得到Y.py所在的
Sub Folder目录 - 向上一级找到Folder目录
- 用这个目录拼接出1.html的完整路径
修改后的代码
我帮你修正了路径问题,同时也优化了原代码里一些冗余的循环逻辑:
import os import glob import re # 获取当前脚本(Y.py)的完整路径 script_path = os.path.realpath(__file__) # 获取脚本所在的Sub Folder目录 sub_folder_dir = os.path.dirname(script_path) # 获取父目录,也就是Folder的路径 folder_dir = os.path.dirname(sub_folder_dir) html = "" # 获取Folder目录下的所有html文件(如果你的目标是Sub Folder下的,就把folder_dir改成sub_folder_dir) for file in sorted(glob.glob(os.path.join(folder_dir, '*.html'))): # 查找当前目录(Sub Folder)下的图片文件,取每种格式的第一个 for img_ext in ('*.webp', '*.png', '*.jpg'): images = sorted(glob.glob(os.path.join(sub_folder_dir, img_ext))) if images: # 确保有图片才处理,避免索引错误 image = images[0] # 获取Folder的名称(也就是你之前的X变量) folder_name = os.path.basename(folder_dir) html += f'''<div class="card"><a href ="{os.path.relpath(file, folder_dir)}"><img class="card__image" src="{os.path.relpath(image, folder_dir)}" width="200px" alt=""> <div class="card__content"><p1>{folder_name}</p1></div> <div class="card__info"></div> </div></a>''' # 自动生成1.html的路径,不用硬编码 out_file_name = os.path.join(folder_dir, "1.html") # 读取并追加内容到1.html with open(out_file_name, "r", encoding="utf-8") as f: existing_html = f.read() if html not in existing_html: with open(out_file_name, "a", encoding="utf-8") as f: f.write(html + '\n')
关键修改点说明
- 自动路径推导:用
os.path.dirname()两次,从脚本路径一步步找到Folder目录,彻底告别硬编码的D:\\Folder\\ - 安全路径拼接:始终用
os.path.join()拼接路径,它会自动适配Windows的\分隔符,避免手动写路径出错 - 冗余逻辑优化:去掉了原代码里重复的
for X in {nmFolders[-2]}:循环,直接通过os.path.basename(folder_dir)获取Folder的名称 - 相对路径适配:用
os.path.relpath()生成相对路径,这样生成的HTML链接在Folder改名后依然有效 - 异常防护:添加了
if images:判断,确保有图片时才生成HTML片段,避免空列表索引错误
这样以后不管Folder改名叫什么,代码都会自动找到它的路径,再也不用手动修改outFileName啦!
内容的提问来源于stack exchange,提问作者Sammy Jakson
相关产品推荐
相关产品推荐

