python3 os.path 模块常用方法汇总

os.path

参考官方文档

该模块主要针对路径的操作,如果想对文件进行操作,参考 open();如果是针对系统基本的命令,参考 os 模块。


os.path.abspath(‘path’)

返回绝对路径,注意有引号

import os
print(os.path.abspath('.'))

/Users/wangxiansheng/Documents/Pycharm/christian

os.path.abspath(path)

返回文件名

import os
print(os.path.basename('/Users/wangxiansheng/Documents/Pycharm'))

Pycharm

os.path.dirname(path)

返回文件路径,不包含文件名

import os
a = 'wangxiansheng'
b = '/Citizen/Wang'
print(os.path.abspath(a))
print(os.path.abspath(b))
print(os.path.dirname(a))
print(os.path.dirname(b))

结果,注意对比和 os.path.abspath 的区别

/Users/wangxiansheng/Documents/Pycharm/christian/wangxiansheng
/Citizen/Wang

/Citizen
  • os.path.abspath 是获得文件的绝对路径
  • os.path.dirname 是获得文件的所在目录

os.path.exists(path)

判断路径是否存在,存在返回 True,不存在返回 False

import os
a = '/Users/wangxiansheng/Documents/Pycharm/christian'
print(os.path.exists(a))

True

os.path.exists 是最为常用的方法是配合 if 语句来做判断 =大师兄python

import os
a = '/Users/wangxiansheng/Documents/Pycharm/christian'

if not os.path.exists(a):
    os.mkdir(a)
else:
    print('Directory is already exist')

os.path.isfile 判断是否是文件
os.path.isdir 判断是否是目录
os.path.isline 判断是否是个链接文件
os.path.ismount 判断是否是挂载点
os.path.isabs 判断是否是绝对路径

import os
a = '/Users/wangxiansheng/Documents/Pycharm/christian'

if os.path.isdir(a):
    print('it is a directory')
else:
    print('it is not a directory')

os.path.join(path1, *path)

把 path1,path2 文件和目录合并成一个路径

import os
for filename in os.listdir('/Users/wangxiansheng/Desktop'):
    print(os.path.join('/tmp', filename))

os.path.splittext()

分隔目录名,返回由文件名和扩展名组成的元组

import os
a = os.path.splitext('/alex/laowang.txt')
print(a)
print(type(a))
('/alex/laowang', '.txt')
<class 'tuple'>

os.path.split()

分隔路径和文件名,结果是一个由文件名和上级目录最的元组

import os
a = os.path.split('/hangzhou/alex/laowang.txt')
print(a)
print(type(a))

('/hangzhou/alex', 'laowang.txt')
<class 'tuple'>
### 使用 `os.walk` 遍历目录并打印文件路径 以下是关于如何使用 `os.walk()` 来遍历指定目录及其子目录,并查找特定类型的文件的详细说明: #### 代码实现 以下是一个完整的代码示例,用于演示如何利用 `os.walk()` 找到 `.txt` 文件并打印其完整路径。 ```python import os for root, dirs, files in os.walk(&#39;/path/to/library&#39;): for file in files: if file.endswith(&#39;.txt&#39;): print(os.path.join(root, file)) ``` #### 功能解析 1. **`os.walk(path)` 的功能** - `os.walk()` 是一个生成器函数,它会递归地遍历指定路径下的所有目录和文件[^1]。 - 它返回三个值:当前正在访问的目录路径 (`root`)、该目录下的子目录列表 (`dirs`) 和该目录下的文件名列表 (`files`)。 2. **变量含义** - `root`: 当前遍历的目录路径。 - `dirs`: 列表形式,表示当前目录下的子目录名称集合。 - `files`: 列表形式,表示当前目录下的文件名称集合。 3. **过滤条件** - 在上述代码中,通过判断文件扩展名为 `.txt` 的方式筛选目标文件。具体逻辑如下: ```python if file.endswith(&#39;.txt&#39;): print(os.path.join(root, file)) ``` 4. **拼接完整路径** - 使用 `os.path.join(root, file)` 将当前目录路径与文件名组合成绝对路径。 #### 符号链接处理 当遇到符号链接时,默认情况下 `os.walk()` 不会跟随这些链接进入其他位置。如果希望忽略符号链接,则无需额外设置;但如果需要支持符号链接,则可以通过参数控制行为。 --- ### 获取当前工作目录的功能 除了 `os.walk()`,另一个常用模块方法是 `os.getcwd()`,它可以获取程序运行时所在的工作目录。 - 调用方式简单明了: ```python current_directory = os.getcwd() print(current_directory) ``` - 返回的是一个字符串,代表当前工作目录的路径[^2]。 --- ### 替换或修改文件内容的操作 对于某些场景,比如批量替换 SQL 文件中的特定字段或者向符合条件的内容追加新语句,可以结合读写操作完成任务。例如,在 `.h` 文件中找到包含某个关键字的行并向其中添加新的语句[^3]。 #### 示例代码 假设我们需要在每行匹配到的关键字后面附加一段固定文本: ```python with open(&#39;example.h&#39;, &#39;r+&#39;, encoding=&#39;utf-8&#39;) as f: lines = [] for line in f.readlines(): if &#39;old_str&#39; in line: new_line = line.strip() + &#39;; additional_statement\n&#39; lines.append(new_line) else: lines.append(line) f.seek(0) f.writelines(lines) f.truncate() ``` 此部分展示了如何动态调整文件内的数据结构以满足业务需求。 --- ### 多个文件夹下 SQL 片段比对的需求分析 针对复杂项目管理过程中涉及大量授权脚本验证的情况,手动对比效率低下且容易出错。因此开发自动化工具成为必要选择之一[^4]。 核心思路包括但不限于以下几个方面: 1. 提取各子文件夹内独立 SQL 文件作为待比较对象; 2. 对照全局汇总版本逐一核验差异之处; 3. 输出报告标明哪些地方存在不一致现象以便后续修正优化。 最终目的是减少人工干预频率从而提升整体工作效率!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值