python os.path方法解析 glob模块

Python 3.6.9 |Anaconda, Inc.| (default, Jul 30 2019, 14:00:49) [MSC v.1915 64 bi
t (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.8.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import os

In [2]: os.getcwd()  # 获取当前工作目录路径
Out[2]: 'C:\\Program Files\\Git'

In [3]: os.path.abspath('.')  # 获取当前工作目录路径
Out[3]: 'C:\\Program Files\\Git'

In [4]: os.path.abspath('test.txt')  # 获取当前目录文件下的绝对路径
Out[4]: 'C:\\Program Files\\Git\\test.txt'

In [5]: os.path.abspath('..')  # 获取当前工作目录路径的父级目录
Out[5]: 'C:\\Program Files'

In [6]: os.path.abspath(os.curdir)  # 获取当前工作目录路径
Out[6]: 'C:\\Program Files\\Git'

In [7]: file = 'D:/mycib/files/test.txt'  # 获取文件名及其后缀

In [8]: os.path.basename(file)
Out[8]: 'test.txt'
>>> os.path.splitext(os.path.basename(file))
('test', '.txt')
# 删除文件
In [9]: os.remove(file)
Out[9]: 'test.txt'
## 后期补充的
>>> os.path.splitext(os.path.basename(file))
('test', '.txt')

## 第二方法
>>> from pathlib import Path
>>> Path(file)
PosixPath('D:/mycib/files/test.txt')
>>> p = Path(file)
>>> p.sem
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'PosixPath' object has no attribute 'sem'
>>> p.stem
'test'
>>> p.suffix
'.txt'
>>>

glob 应用示例

mmt_file_dir = 'backend/scripts/mmts'
mmt_files = glob(mmt_file_dir + "**/**/*.mmt", recursive=True)
>>> import glob
>>> mmt_files = "backend/scripts/mmts"
>>> glob.glob(mmt_files, ".mmt")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: glob() takes 1 positional argument but 2 were given
>>> glob.glob(mmt_files)
['/Users/mac/projects/memect/hexun/backend/scripts/mmts']
>>> glob.glob(".mmt")
[]
>>> glob.glob("/Users/mac/mmts/*.mmt")
[]
>>> glob.glob("*.mmt")
[]
>>> glob.glob("/Users/mac/mmts/*.mmt", recursive=True)
[] # 这个路径下确实没有.mmt相关的文件 
>>> glob.glob("*.mmt", recursive=True)
[]
>>> glob.glob("*", recursive=True)
['async_request_url.py', 'category_leve2_mapping.json', 'sse_announce.json', 'print_data_set_names.py', 'async_request_url copy.py', 'Untitled(1).csv', 'generate_mmt.py', 'mmts', 'pdf_dir']
>>> glob.glob("*", recursive=False)
['async_request_url.py', 'category_leve2_mapping.json', 'sse_announce.json', 'print_data_set_names.py', 'async_request_url copy.py', 'Untitled(1).csv', 'generate_mmt.py', 'mmts', 'pdf_dir']
>>> glob.glob("**/", recursive=False)
['mmts/', 'test_dir/']
>>> glob.glob("**/**/", recursive=False)
# '可以正常返回数据了'
>>> glob.glob("**/**/*.mmt", recursive=False)
# '可以正常返回数据了'

Path 方法使用说明:

pathlib 模块是 Python 3.4 及更高版本中引入的一个用于处理文件路径和目录的库,它提供了一种更直观和面向对象的方式来进行文件和目录操作。以下是一些 pathlib.Path 类的常用属性和方法,以及它们的使用方法:

常用属性:
Path.parts: 返回路径的各个部分,以元组形式返回。例如,Path(‘/home/user/docs’).parts 返回 (‘home’, ‘user’, ‘docs’)。

Path.parent: 返回路径的父目录。例如,Path(‘/home/user/docs’).parent 返回 Path(‘/home/user’)。

Path.name: 返回路径的基本名称(不包括父目录)。例如,Path(‘/home/user/docs’).name 返回 ‘docs’。

Path.suffix: 返回路径的文件扩展名。例如,Path(‘/home/user/docs/file.txt’).suffix 返回 ‘.txt’。

Path.stem: 返回路径的文件名(不包括扩展名)。例如,Path(‘/home/user/docs/file.txt’).stem 返回 ‘file’。

Path.drive (仅适用于 Windows): 返回驱动器名。例如,Path(‘C:/Users/user/docs’).drive 返回 ‘C:’。

常用方法:
Path.exists(): 检查路径是否存在。返回 True 或 False。

Path.is_file(): 检查路径是否指向一个文件。返回 True 或 False。

Path.is_dir(): 检查路径是否指向一个目录。返回 True 或 False。

Path.mkdir(): 创建目录。例如,Path(‘/new_directory’).mkdir() 创建一个名为 ‘new_directory’ 的目录。

Path.rmdir(): 删除目录。例如,Path(‘/directory_to_delete’).rmdir() 删除名为 ‘directory_to_delete’ 的目录。

Path.touch(): 创建文件。例如,Path(‘/new_file.txt’).touch() 创建一个名为 ‘new_file.txt’ 的文件。

Path.unlink(): 删除文件。例如,Path(‘/file_to_delete.txt’).unlink() 删除名为 ‘file_to_delete.txt’ 的文件。

Path.rename(new_name): 重命名文件或目录。例如,Path(‘/old_name.txt’).rename(‘/new_name.txt’) 将文件从 ‘old_name.txt’ 重命名为 ‘new_name.txt’。

Path.glob(pattern): 根据指定的通配符模式搜索匹配的文件或目录。例如,Path(‘/my_directory’).glob(‘*.txt’) 返回目录 ‘/my_directory’ 中所有扩展名为 ‘.txt’ 的文件。

Path.is_absolute(): 检查路径是否是绝对路径。返回 True 或 False。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值