如何在文件中输出相对路径?Python目录结构生成求助
解决方案
要输出相对路径,核心是利用os.path.relpath()函数将遍历得到的绝对路径转换为指定基准目录的相对路径。根据你的期望输出,基准目录设为脚本所在目录的上一级即可,修改后的脚本如下:
import os # 获取脚本所在的绝对路径 absolute_path = os.path.dirname(__file__) # 设置基准目录(脚本目录的父目录,对应期望输出的起始层级) base_dir = os.path.dirname(absolute_path) with open("output.txt", "w", newline='') as a: for path, subdirs, files in os.walk(absolute_path): # 将绝对路径转为相对于基准目录的相对路径 rel_path = os.path.relpath(path, base_dir) # 加上.\前缀匹配期望格式,兼容Windows系统 rel_path_formatted = f".\\{rel_path}" if os.name == 'nt' else f"./{rel_path}" a.write(rel_path_formatted + os.linesep) for filename in files: a.write('\t%s\n' % filename)
关键修改说明:
os.path.relpath(path, base_dir):计算path相对于base_dir的相对路径,比如原绝对路径是C:\Users\User\OneDrive\bla\bla,基准目录是C:\Users\User\OneDrive,转换后得到bla\bla。- 平台兼容前缀:通过
os.name判断系统类型,Windows下用.\\,Linux/macOS下用./,保证相对路径格式符合系统习惯。
输出示例:
修改后运行脚本,输出会和你期望的格式完全一致:
.\bla .\bla\folder1 file1.xxx file2.xxx file3.xxx .\bla\folder2 test1.txt
内容的提问来源于stack exchange,提问作者Akula1
相关产品推荐
相关产品推荐

