写点什么

python 小知识 -python 文件操作

作者:AIWeker
  • 2022-11-15
    福建
  • 本文字数:1022 字

    阅读完需:约 3 分钟

python小知识-python 文件操作

在程序的世界中,数据是以文件的形式存储中,通常会以一定的目录结构进行组织。程序开发即是数据处理,所以文件操作是语言开发的必备功能。


这似乎是显而易见的,也是语言学习的底层基础逻辑。


今天介绍 3 种 python 中常见的文件操作


  • os.listdir

  • glob

  • os.walk

1.os.listdir

listdir 提供了当前目录的下所有文件和目录的列表,遍历文件需要判断文件或者文件夹,或者你已经清楚目录结构。


  • 递归遍历需要手动编写

  • 完整路径需要 os.path.join 拼接


import os
test_path = r'D:\mywork\writer\test'for file in os.listdir(test_path): file_name = os.path.join(test_path, file) if os.path.isfile(file_name): print('file is = ', file_name) elif os.path.isdir(file_name): print('dir is = ', file_name)
# dir is = D:\mywork\writer\test\img# file is = D:\mywork\writer\test\test.html# file is = D:\mywork\writer\test\test.md
复制代码

2.glob

glob 包提供了匹配方式(类型 linux 文件查找的方式)的获取全路径信息。


import glob
file_list = glob.glob('D:/mywork/writer/test/*', recursive=False)print(file_list)
# ['D:/mywork/writer/test\\img',# 'D:/mywork/writer/test\\test.html',# 'D:/mywork/writer/test\\test.md']
复制代码


从上可知,glob.glob 通过通配符的方式获取当前目录下所有完整信息,通配符包括:


  • 匹配 1 个字符,与正则表达式里的?不同

  • *: *.py

  • [exp] 匹配指定范围内的字符,如:[1-9]匹配 1 至 9 范围内的字符


举例如下:


  • glob.glob(r"/home/xxx//0[0,1,2].png")

  • glob.glob(r"/home/xxx/*.png")

  • glob.glob(r"/home/xxx/?.png") # 0.png 1.png 过滤掉 12.png

3.os.walk

os.walk 提供了所有层级结果的遍历生成器,是一种方便处理方式。


# curDir, dirs, files# curDir 当前目录# dirs 该目录下包含的子目录# files 当前目录下文件test_path = r'D:\mywork\writer\test'for i in os.walk(test_path):    print(i)
# ('D:\\mywork\\writer\\test', ['img'], ['test.html', 'test.md'])# ('D:\\mywork\\writer\\test\\img', [], ['yyq-2021-06-27-22-54-53.png'])
for curDir, dirs, files in os.walk(test_path): for file in files: print(os.path.join(curDir, file))
# D:\mywork\writer\test\test.html# D:\mywork\writer\test\test.md# D:\mywork\writer\test\img\yyq-2021-06-27-22-54-53.png
复制代码


可以根据实际情况,使用三种不同的文件操作

发布于: 刚刚阅读数: 3
用户头像

AIWeker

关注

InfoQ签约作者 / 公众号:人工智能微客 2019-11-21 加入

人工智能微客(aiweker)长期跟踪和分享人工智能前沿技术、应用、领域知识,不定期的发布相关产品和应用,欢迎关注和转发

评论

发布
暂无评论
python小知识-python 文件操作_Python_AIWeker_InfoQ写作社区