python中文件路径如何读取 Python进行文件路径处理的模块详解 pyth
目录
- 1. 前言
- 2. 文件路径检查模块
- 2.1 模块使用技巧
- 2.2 子模块1:当前路径输出
- 2.3 子模块2:路径跳转
- 2.4 子模块3:根目录完整路径展示
- 2.5 子模块4:目标路径检查
- 3. 完整模块展示
1. 前言
项目运行环境:
- 平台:Window11
- 语言环境:Python3.8
- 运行环境1:PyCharm 2021.3
- 运行环境2:Jupyter Notebook 7.3.2
- 框架:PyTorch 2.5.1(CUDA11.8)
2. 文件路径检查模块
我相信很多人和猫猫一样,从来没有好好研究过Python的文件路径。之前对于文件路径输出、跳转、完整路径的聪明完全来自于Java和linux。例如./、../ 这样子,你说可以用嘛,天然是可以的。然而这样子实在是太不直观了,Python小编认为一个magical语言,肯定有其他更直观的文件路径处理技巧。你别说,还真有,今天猫猫就来带你们看看。
2.1 模块使用技巧
假如你现在想要从一个文件中拿出一个物品 或者 把你生成的物品放到一个文件中,此时你就必须使用这样一个文件路径模块了。影响是用来看你需要的物品,它到底在路径层面怎么放到那一个文件夹中,或从文件夹中拿出来。
不要说你要看PyCharm旁边的目录结构就可以了,猫猫今天被坑了1个多小时。由于跑深度进修的代码我们都是放在服务器中跑的,然而写代码都是在本机PyCharm中写的,因此两者的目录结构大概率是不一样的,一旦不注意就容易和猫猫一样被坑好多少小时,因此每次处理和文件路径有关的物品,都建议先用猫猫的模块做一个检查。
2.2 子模块1:当前路径输出
from pathlib import Path 获取当前脚本所在目录,并输出完全路径script_parent = Path(__file__).resolve()print(f”当前脚本目录完整路径: script_parent}”)
Path(__file__):创建路径对象。将当前脚本的文件路径转换为 pathlib.Path 对象。
.resolve():解析为完全路径。相对路径转换为完全路径(如 ./script.py → /home/user/project/script.py)。
Path(__file__) /usr/bin/myscript(符号链接路径)Path(__file__).resolve() /home/user/project/script.py(实际路径)
2.3 子模块2:路径跳转
通过前面的模块,我们就看可以看到自己代码所在的目录。现在我们想要实现路径的跳转,由于我们看路径的本质就是为了到一个我们想要的路径中拿到我们想要的物品,或者将我们的物品送到我们想要的地方去,这都涉及路径的跳转。路径跳转分为:父路径跳转+子路径跳转。
父路径跳转:
本质就是退出当前路径,回到父目录。
from pathlib import Path 获取当前脚本所在目录的父目录,并输出完全路径script_parent = Path(__file__).resolve().parentprint(f”父目录完整路径: script_parent}”)
.parent:获取父目录。返回路径的父目录。若路径是 /home/user/project/script.py:
Path(__file__).resolve().parent /home/user/project
子路径跳转:
本质就是在当前目录中往下深入,因此就是在目录路径后面追加一部分路径内容。
script_dir = Path(__file__).resolve().parent.parent.parenttarget_dir = script_dir / “Real-ESRGAN-main” / “inputs”target_dir1 = script_dir / “Real-ESRGAN-main”
/:后面跟上想要进入的路径名称即可,可以一级一级叠加使用
.parent:同样允许一级一级叠加使用
2.4 子模块3:根目录完整路径展示
def generate_file_tree(directory: str, max_depth: int = 3) -> str: “””生成带格式的目录树(优化递归性能)””” def _tree(path: Path, prefix: str = “”, depth=0) -> str: if depth > max_depth: return “” try: items = sorted(path.iterdir(), key=lambda x: (not x.is_dir(), x.name.lower())) except PermissionError: return f”prefix}└── &x1f512; 权限不足” except FileNotFoundError: return f”prefix}└── &x2753; 目录已消失” contents = [] for index, item in enumerate(items): is_last = index == len(items) – 1 connector = “└── ” if is_last else “├── ” 文件类型识别 if item.is_symlink(): icon = “&x1f517;” suffix = f” -> item.resolve()}” elif item.is_dir(): icon = “&x1f4c1;” suffix = “” else: icon = “&x1f4c4;” suffix = f” (item.stat().st_size // 1024} KB)” if item.stat().st_size > 0 else ” (空文件)” entry = f”prefix}connector}icon} item.name}suffix}” contents.append(entry) 递归处理子目录 if item.is_dir() and not item.is_symlink(): extension = ” ” if is_last else “│ ” contents.append(_tree(item, prefix + extension, depth + 1)) return “n”.join(contents) if contents else f”prefix}└── &x1f5d1; 空目录” root = Path(directory) if not root.exists(): return f”&x274c; 路径不存在: directory}” return f”&x1f333; 目录树 root} (深度限制: max_depth})n” + _tree(root)
通过上面代码,我们能够去找指定路径下面的所有完整路径目录。通过前面三个模块,我们可以回到我们代码所在的根目录,接着通过这个代码,我们就可以找到根目录下面所有的目录结构。
2.5 子模块4:目标路径检查
根据前面三个子模块,我们已经可以找到目标路径。现在就是验证目标路径是否存在即可,因此需要对目标路径进行检查。
def path_exists(path_str: str) -> bool: “””通用路径存在性检查””” return Path(path_str).exists()
3. 完整模块展示
“””path_analyzer.py – 多功能路径分析工具功能包含:1. 脚本自身路径信息展示2. 智能目录树生成3. 路径存在性验证4. 递归深度控制””” from pathlib import Pathimport argparse 获取脚本路径信息script_path = Path(__file__).resolve()script_dir = script_path.parent def show_script_info(): “””显示脚本自身路径信息””” print(f”&x1f4dc; 脚本路径: script_path}”) print(f”&x1f4c2; 脚本目录: script_dir}n”) def generate_file_tree(directory: str, max_depth: int = 3) -> str: “””生成带格式的目录树(优化递归性能)””” def _tree(path: Path, prefix: str = “”, depth=0) -> str: if depth > max_depth: return “” try: items = sorted(path.iterdir(), key=lambda x: (not x.is_dir(), x.name.lower())) except PermissionError: return f”prefix}└── &x1f512; 权限不足” except FileNotFoundError: return f”prefix}└── &x2753; 目录已消失” contents = [] for index, item in enumerate(items): is_last = index == len(items) – 1 connector = “└── ” if is_last else “├── ” 文件类型识别 if item.is_symlink(): icon = “&x1f517;” suffix = f” -> item.resolve()}” elif item.is_dir(): icon = “&x1f4c1;” suffix = “” else: icon = “&x1f4c4;” suffix = f” (item.stat().st_size // 1024} KB)” if item.stat().st_size > 0 else ” (空文件)” entry = f”prefix}connector}icon} item.name}suffix}” contents.append(entry) 递归处理子目录 if item.is_dir() and not item.is_symlink(): extension = ” ” if is_last else “│ ” contents.append(_tree(item, prefix + extension, depth + 1)) return “n”.join(contents) if contents else f”prefix}└── &x1f5d1; 空目录” root = Path(directory) if not root.exists(): return f”&x274c; 路径不存在: directory}” return f”&x1f333; 目录树 root} (深度限制: max_depth})n” + _tree(root) def path_check(path_str: str) -> dict: “””增强型路径检查””” path = Path(path_str) status = ‘exists’: path.exists(), ‘is_file’: path.is_file(), ‘is_dir’: path.is_dir(), ‘size’: path.stat().st_size if path.exists() else 0 } return status def main(): “””命令行入口点””” parser = argparse.ArgumentParser(description=”路径分析工具”) parser.add_argument(‘path’, nargs=’?’, default=str(script_dir), help=”要分析的路径(默认为脚本目录)”) parser.add_argument(‘-d’, ‘–max-depth’, type=int, default=3, help=”目录树递归深度(默认3)”) parser.add_argument(‘-q’, ‘–quiet’, action=’store_true’, help=”静默模式(不显示脚本信息)”) args = parser.parse_args() if not args.quiet: show_script_info() 路径有效性检查 check_result = path_check(args.path) if not check_result[‘exists’]: print(f”&x274c; 错误:路径不存在 – args.path}”) return 生成目录树 tree = generate_file_tree(args.path, args.max_depth) print(tree) 显示统计信息 print(f”n&x1f4ca; 路径统计:”) print(f” – 类型: ‘目录’ if check_result[‘is_dir’] else ‘文件’}”) if check_result[‘is_dir’]: print(f” – 包含项目: len(list(Path(args.path).iterdir()))}”) else: print(f” – 文件大致: check_result[‘size’] // 1024} KB”) if __name__ == “__main__”: main()
注意哈,上面的模块代码可以直接使用,仅仅需要修改的只有def main中的内容,主要还是对文件路径完整模块的一些功能进行调整(都已经注释好了)
到此这篇关于Python进行文件路径检查的模块详解的文章就介绍到这了,更多相关Python文件路径检查内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
无论兄弟们可能感兴趣的文章:
- Python中文件路径的处理方式拓展资料
- Python文件路径读取实例代码详解
- Python实现迅速获取文件的路径
- python获取当前文件和目录路径的技巧详解
- Python中文件路径的拼接的几种技巧实例
- Python中文件路径常用操作拓展资料