python 您所在的位置:网站首页 python打开指定路径图片 python

python

2023-06-15 12:20| 来源: 网络整理| 查看: 265

本文说明如何利用 Python 和 正则表达式对文件路径进行处理。

更新:2023 / 06 / 11

python | 巧用正则表达式:实践 - 对文件路径的处理 glob概念语法glob.globglob.iglob 示例***? os.walk概念语法示例 参考链接

通配符是一些特殊符号,主要有 * 星号 和 ? 问号,用来模糊搜索文件,* 可以匹配任意个数个符号,? 可以匹配单个字符。

当查找文件夹时,可以使用它来代替一个或多个真正字符。当不知道真正字符或者需要匹配符合一定条件的多个目标文件时,可以使用通配符代替一个或多个真正的字符。

glob 概念

英文 globbing 意为通配,glob 是 python 自带的一个文件操作相关模块,可以用于查找符合自己目的的文件,就类似于 windows 下的文件搜索,其接受通配模式作为输入,并返回所有匹配的文件名和路径名列表。 与 os.listdir 类似。

语法 glob.glob glob.glob(pathname, *, root_dir=None, dir_fd=None, recursive=False, include_hidden=False) 参数描述pathname其为需要匹配的字符串 1’ 2’ 3(该参数应尽量加上 r 后缀,以免发生不必要的错误)。recursive代表递归调用,与特殊通配符 ** 一同使用,默认为 False。

该函数返回一个符合条件的路径的字符串列表。如果使用的是 Windows 系统,路径上的 \ 符号会自动加上转义符号变为 \\ 4。

glob 模块支持的通配符 5:

通配符功能*匹配 0 或多个字符。**匹配所有文件、目录、子目录和子目录里的文件。?匹配 1 个字符,与正则表达式里的 ? 不同[exp]匹配指定范围内的字符,如 [1-9] 匹配 1 至 9 范围内的字符。[!exp]匹配不在指定范围内的字符。 glob.iglob iglob(pathname, recursive=False)

参数与 glob() 一致。 返回一个迭代器,该迭代器不会同时保存所有匹配到的路径,而是逐个获取匹配的文件路径。 遍历该迭代器的结果与使用相同参数调用 glob() 的返回结果一致。

以下是一个简要地例子用以说明其用法 6,

f = glob.iglob(r'../*.py') print(f) # for i in f: print(i) 示例 * import glob listglob = [] '''获取指定路径下的*.py''' listglob = glob.glob(r"./PycharmProjects/DataAnalysis/DataAnalysis/*/*.py") listglob.sort() # ./PycharmProjects/DataAnalysis/DataAnalysis/Jira/DataAnalysisWithJira.py # ./PycharmProjects/DataAnalysis/DataAnalysis/Jira/DataAnalysisWithJira_1.py # ./PycharmProjects/DataAnalysis/DataAnalysis/Jira/JiraReport_Plot.py # ./PycharmProjects/DataAnalysis/DataAnalysis/Jira/JiraReport_html.py ** import glob listglob = [] '''获取指定路径及其各级子路径下的*.py''' listglob = glob.glob(r"./PycharmProjects/DataAnalysis/**/*.py", recursive=True) listglob.sort() # ./PycharmProjects/DataAnalysis/DataAnalysis/Jira/DataAnalysisWithJira.py # ./PycharmProjects/DataAnalysis/DataAnalysis/Jira/DataAnalysisWithJira_1.py # ./PycharmProjects/DataAnalysis/DataAnalysis/Jira/JiraReport_Plot.py # ./PycharmProjects/DataAnalysis/DataAnalysis/Jira/JiraReport_html.py # ./PycharmProjects/DataAnalysis/DataAnalysis/NumPy/NumPyEx/NumPy_Ex0_rm_rows_between_2_array.py # ./PycharmProjects/DataAnalysis/DataAnalysis/NumPy/NumPyEx/NumPy_Ex1_3Dscatter/NumPy_Ex1_3Dscatter.py # ./PycharmProjects/DataAnalysis/DataAnalysis/NumPy/NumPyEx/NumPy_Ex2_DataProcess/NumPy_Ex2_DataProcess.py # ./PycharmProjects/DataAnalysis/DataAnalysis/NumPy/NumPyEx/NumPy_Ex3_GetKeyInfo/NumPy_Ex3_SearchKeyword.py # ./PycharmProjects/DataAnalysis/DataAnalysis/NumPy/NumPyEx/NumPy_Ex3_GetKeyInfo/NumPy_Ex3_SearchKeyword_v2.py # ./PycharmProjects/DataAnalysis/DataAnalysis/NumPy/NumPyEx/NumPy_Ex4_ExtractFilePathFromStr/NumPy_Ex4_ExtractFilePathFromStr.py # ./PycharmProjects/DataAnalysis/DataAnalysis/Pandas/Filter/Filter_RowOrCol.py # ./PycharmProjects/DataAnalysis/DataAnalysis/Pandas/IO/Excel/IO_Excel.py # ./PycharmProjects/DataAnalysis/DataAnalysis/Pandas/Pivot_Table/Query/Pivot_Table_Query.py # ./PycharmProjects/DataAnalysis/DataAnalysis/test.py ? import glob listglob = [] listglob = glob.glob(r"./PycharmProjects/DataAnalysis/**/N?m?y*py", recursive=True) listglob.sort()) # ./PycharmProjects/DataAnalysis/DataAnalysis/NumPy/NumPyEx/NumPy_Ex0_rm_rows_between_2_array.py # ./PycharmProjects/DataAnalysis/DataAnalysis/NumPy/NumPyEx/NumPy_Ex1_3Dscatter/NumPy_Ex1_3Dscatter.py # ./PycharmProjects/DataAnalysis/DataAnalysis/NumPy/NumPyEx/NumPy_Ex1_3Dscatter/NumPy_Ex1_3Dscatter_ExampleData.npy # ./PycharmProjects/DataAnalysis/DataAnalysis/NumPy/NumPyEx/NumPy_Ex2_DataProcess/NumPy_Ex2_DataProcess.py # ./PycharmProjects/DataAnalysis/DataAnalysis/NumPy/NumPyEx/NumPy_Ex3_GetKeyInfo/NumPy_Ex3_SearchKeyword.py # ./PycharmProjects/DataAnalysis/DataAnalysis/NumPy/NumPyEx/NumPy_Ex3_GetKeyInfo/NumPy_Ex3_SearchKeyword_v2.py # ./PycharmProjects/DataAnalysis/DataAnalysis/NumPy/NumPyEx/NumPy_Ex4_ExtractFilePathFromStr/NumPy_Ex4_ExtractFilePathFromStr.py os.walk 概念

os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向下或向上。 os.walk 方法是一个简单易用的文件、目录遍历器,可以帮助我们高效地处理文件、目录方面的事情。

在 Unix、Windows 中有效。

语法 os.walk(top[, topdown=True[, oneerror=None[,followlinks=False]]]) 参数说明top后接所需遍历的目录的地址,返回的是一个三元组(root,dirs,files)。root 所指的是当前正在遍历的这个文件夹的本身的地址。dirs 是一个 list,内容是该文件夹中所有的目录的名字(不包括子目录)。files 同样是 list,内容是该文件夹中所有的文件(不包括子目录)。topdown可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历 top文件夹,与 top 文件夹中每一个子目录。oneerror可选,需要一个 callable 对象,当 walk 需要异常时,会调用。followlinks可选,如果为 True,则会遍历目录下的快捷方式( linux 下是软链接 symbolic )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。

该方法没有返回值。

示例

如果要输出指定目录 dir 下的所有信息,并将 .py 结尾的文件输出到指定的文件 output 中 3,

import os import re dir = ['./DataAnalysis'] output = './DataAnalysis/file.list' for i in dir: with open(output, 'a') as f: for root, dirs, paths in os.walk(i): for pathfile in paths: print(os.path.join(root, pathfile)) if re.match(r'.*\.py', pathfile) != None: f.write(os.path.join(root, pathfile)+'\n') 参考链接

【python】使用正则匹配判断字符串中含有某些特定子串 及 正则表达式详解 ↩︎

文件路径 正则表达式 ↩︎

Python 的正则操作与获取指定目录下的文件 ↩︎ ↩︎

glob — Unix style pathname pattern expansion ↩︎

python通配符之glob模块的使用详解 ↩︎

python glob model 获取文件路径操作, 可使用正则表达式 ↩︎



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有