Python中带最大长度限制的文件路径美化打印函数问询
Python 实现带长度限制的文件路径美化打印
Python标准库中没有直接提供满足你需求的现成函数,但可以自己实现一个符合要求的pretty_print函数,确保保留盘符、文件名,同时截断中间目录使总长度不超过指定限制。
实现代码
import os def pretty_print(file_path, max_length=35): # 拆分盘符与路径主体 drive, rest = os.path.splitdrive(file_path) # 拆分目录部分与文件名 dir_part, filename = os.path.split(rest) # 计算基础结构的长度:盘符 + "..." + 文件名 base_len = len(drive) + 3 + len(filename) # 极端情况:基础结构已超过长度限制,优先保留盘符和文件名核心部分 if base_len > max_length: truncated_filename = filename[:max_length - len(drive) - 3] return f"{drive}...{truncated_filename}" # 若原路径长度未超限制,直接返回原路径 if len(file_path) <= max_length: return file_path # 计算可分配给目录部分的长度,截取前半段目录 available_dir_len = max_length - base_len truncated_dir = dir_part[:available_dir_len] # 拼接最终路径 return f"{drive}{truncated_dir}...{filename}"
示例调用与输出
调用:
pretty_print(r"C:\Program Files\Common Files\Adobe\Keyfiles\dynamiclink\7.0\ConflictingP.xml", max_length=35)
输出:
C:\Program Files\...\ConflictingP.xml
函数逻辑说明
- 借助
os.path.splitdrive和os.path.split拆分路径的盘符、目录、文件名,确保核心部分不丢失 - 先校验基础结构(盘符+省略号+文件名)的长度,避免极端情况下无法保留关键信息
- 若原路径长度符合要求,直接返回原路径;否则截取目录的前半部分,用
...替代被截断的中间目录,保证总长度不超过限制
内容的提问来源于stack exchange,提问作者Omar Zaki
相关产品推荐
相关产品推荐

