首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果将全名指定为pattern,为什么Path.rglob()返回小写的文件名?

Path.rglob() 是 Python 中 pathlib 模块的一个方法,用于递归地搜索目录树中的文件。当你使用 Path.rglob() 并传入一个模式(如 pattern)时,它会返回所有匹配该模式的文件路径。

关于你提到的问题,即为什么 Path.rglob() 返回小写的文件名,这通常与操作系统的文件系统大小写敏感性有关。

基础概念

  1. 文件系统大小写敏感性
    • 大小写敏感:例如 Unix/Linux 系统,文件名区分大小写。例如,file.txtFile.txt 是两个不同的文件。
    • 大小写不敏感:例如 Windows 系统,文件名不区分大小写。例如,file.txtFile.txt 被视为同一个文件。

原因

  • Windows 系统:在 Windows 上,文件系统不区分大小写。当你使用 Path.rglob() 搜索文件时,它可能会返回所有匹配的文件,而不考虑大小写。这可能导致返回的文件名是小写的。
  • Unix/Linux 系统:在 Unix/Linux 上,文件系统区分大小写,因此 Path.rglob() 会严格按大小写匹配文件名。

解决方法

如果你希望在 Windows 上进行大小写敏感的搜索,可以考虑以下方法:

  1. 使用 fnmatch 模块
  2. 使用 fnmatch 模块
  3. 使用第三方库: 你可以使用一些第三方库,如 pathspec,来进行更复杂的模式匹配。

应用场景

  • 文件搜索:在需要精确匹配文件名的场景中,特别是在跨平台应用中。
  • 自动化脚本:在编写自动化脚本时,确保文件名匹配的准确性。

参考链接

希望这些信息能帮助你理解 Path.rglob() 返回小写文件名的原因,并提供一些解决方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

LinuxShell命令grep

PATTERN定为 BRE 或 ERE 可参照 LinuxShell正则表达式 。 3....,那么假定二进制文件不会匹配(等价于 -I 选项)如果 TYPE 为 text,那么一个二进制文件视为文本文件处理(等价于 -a 选项) -D ACTION, --devices=ACTION 如果输入文件是一个设备...ACTION 指定为 skip 时,将不处理而直接跳过该目录当 ACTION 指定为 recurse 时,递归读取目录下所有文件(等价于 -r 选项) --exclude=GLOB 跳过文件名匹配通配符模式...--exclude-dir=GLOB 跳过目录名匹配通配符模式 GLOB 所有目录如果是递归读取目录下目录,则跳过基本名(不包含路径)匹配模式所有目录 -I 二进制文件视为不会匹配处理(等价于上文...--binary-files=without-match) --include=GLOB 只处理文件名匹配通配符模式 GLOB 文件如果是递归读取目录下文件,则处理基本名(不包含路径)匹配模式所有文件

74610

正则表达式一些实用技巧

聚精会神好像拆弹,而且正则表达式一旦发生变化,groupindex也会变.有洁癖程序员不愿意忍受下面的代码中那个2 val matcher = Pattern.compile("""(中标金额:|...先举一个负向断言例子,假设有几个文件全名,"file1.mp3", "file2.bat", "file3.txt",需要把文件名和扩展名都提取出来,在这个过程中,需要忽略所有bat文件.要是用普通代码实现...,我都没想明白它到底有什么实际作用,能用正向断言时为什么不用非捕获组....后来终于找到了一个可以名正言顺使用正向断言例子,用正则表达式来实现,效果拔群,立竿见影,感觉特别奇技淫巧.那就是密码强度判断,比如要求密码8到12位,必须有大小写字母和数字 val pattern...= Pattern.compile("""^(?

80530
  • SQL谓词 %PATTERN

    描述 %PATTERN谓词允许字符类型代码和字面值模式匹配到由标量表达式提供数据值。 如果模式匹配完整标量表达式值,则返回该值。...如果pattern没有完全匹配任何标量表达式值,%pattern返回空字符串。 %PATTERN使用与ObjectScript模式匹配操作符相同模式代码(? 操作符)。....U表示任意数量大写字母。 .E表示任意数量任何类型可打印字符。 .3A不超过三个(三个或以下)字母(大写或小写)任何数字。 3.N表示三位或三位以上数字。...模式匹配区分大小写。模式匹配基于标量表达式精确值,而不是其排序规则值。因此,即使标量表达式排序规则类型不区分大小写,%Pattern操作中指定文字字母也始终区分大小写。...下面的示例在HAVING子句中使用%PATTERN操作符为姓名以字母“Jo”开头的人选择记录,并返回搜索记录和返回记录计数。

    61120

    python遍历文件夹os.path与pathlib

    (path) ('c:\csv', 'test.csv') path分割成目录和文件名二元组返回。...os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False。 os.path.isabs(path) 如果path是绝对路径,返回True。...os.path.splitext(path) 分离文件名与扩展名 os.path.getmtime(path) 返回path所指向文件或者目录最后修改时间 详见 pathlib 自python3开始...Path.mkdir()  #创建目录 Path.rename()  #重命名路径 Path.rglob()  #递归遍历所有子目录文件 Path.parts  #分割路径 类似os.path.split...(), 不过返回元组 path.suffix    #文件后缀 path.stem      #文件名不带后缀 path.name      #带后缀完整文件名 path.parent    #路径上级目录

    2.2K50

    都说Linux很重要,你会几个Linux命令?来看看这道面试题目。

    * : 表示当前目录所有文件,也可以是某个文件名 -r 是递归查找 -n 是显示行号 -R 查找所有文件包含子目录 -i 忽略大小写 下面是一些有意思命令行参数: grep -i pattern files...默认情况区分大小写, grep -l pattern files :只列出匹配文件名, grep -L pattern files :列出不匹配文件名, grep -w pattern files...'^':匹配字符串在行首, '$':匹配字符串在行尾, [hadoop@hadoop101 opt]$ grep -rn yuan * ?...,如果zhi发现某文件内容符合所指定范本样式,预设grep指令会把含有范本样式那一列显示出来。...若不指定任何文件名称,或是所给予文件名为“-”,则grep指令会从标准输入设备读取数据。 END

    30410

    (转)Java正则表达式入门

    众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员时间及精力。...正则表达式作为一个模板,某个字符模式与所搜索字符串进行匹配。 自从jdk1.4推出java.util.regex包,就为我们提供了很好JAVA正则表达式应用平台。...x) 在这种模式下,匹配时会忽略(正则表达式里)空格字符(译者注:不是表达式里"//s",而是表达式里空格,tab,回车之类)。注释从#开始,一直到这行结束。...u) 在这个模式下,如果你还启用了CASE_INSENSITIVE标志,那么它会对Unicode字符进行大小写不明感匹配。默认情况下,大小写不敏感匹配只适用于US-ASCII字符集。...,返回true,否则返回false System.out.println(b); ◆以多条件分割字符串时 Pattern pattern = Pattern.compile("[, |]+")

    97710

    java文件基本操作与实例

    每个文件以一个文件路径和文件名称进行表示,在需要访问该文件时,只需要知道该文件路径以及文件全名即可。...相对路径是指书写文件部分路径,例如\test\Hello.java,该路径中只包含文件部分路径\test和文件全名Hello.java,部分路径是当前路径下子路径,例如当前程序在d:\abc下运行...和文件路径一样,在Java代码内部书写文件名称时也区分大小写文件名小写必须和操作系统中小写保持一致。 另外,在书写文件名称时不要忘记书写文件后缀名。...如果创建成功则返回true,否则返回false。                   ...第二个示例是删除某个文件夹下所有文件和文件夹,原理是判断 是否是文件,如果是文件则直接删除,如果是文件夹,则获得该文件夹下所有的子文件和子文件夹,然后递归调用该方法处理所有子文件和子文件夹,然后空文件

    81080

    linux在所有文件中查找某一个字符

    如果是当前文件夹可以省略 -type f 说明,只找文件 -name "*.c" 表示只找C语言写代码,从而避免去查binary;也可以不写,表示找所有文件 是你要找某个字符串 sudo find...用echo命令输出加引号字符串时,字符串原样输出; 用echo命令输出不加引号字符串时,字符串中各个单词作为字符串输出,各字符串之间用一个空格分割。...* * : 表示当前目录所有文件,也可以是某个文件名 -r 是递归查找 -n 是显示行号 -R 查找所有文件包含子目录 -i 忽略大小写 下面是一些有意思命令行参数: grep -i pattern...默认情况区分大小写,  grep -l pattern files :只列出匹配文件名,  grep -L pattern files :列出不匹配文件名,  grep -w pattern files...'^':匹配字符串在行首,  '$':匹配字符串在行尾,   2,xargs配合grep查找 find -type f -name '*.php'|xargs grep 'GroupRecord

    1.8K10

    SQL函数 DATEPART

    这个名称可以用大写或小写来指定,有或没有引号。datepart可以指定为文字或主机变量。 date-expression - 从中返回datepart值日期、时间或时间戳表达式。...Datepart 参数 日期部分参数可以是下列日期/时间组件之一,可以是全名(日期部分列)或其缩写(缩写列)。这些datepart组件名称和缩写不区分大小写。...weekday:对weekday默认设置是星期日指定为一周第一天(weekday=1)。但是,可以一周第一天配置为另一个值,或者可以应用ISO 8601标准,星期一定为一周第一天。...second:如果日期表达式包含小数秒,秒作为十进制数返回,整数秒作为整数部分,小数秒作为小数部分。精度不会被截断。 millisecond:返回三个小数位数精度,去掉尾随零。...日期字符串必须完整且格式正确,每个元素都有适当数量元素和数字,以及适当分隔符。例如,如果省略了“日”值,则不能返回“年”值。年份必须指定为四位数。 时间字符串必须用适当分隔符正确格式化。

    1.8K20

    SQL函数 DATENAME

    日期或时间部分名称(或缩写)。 可以用大写或小写指定该名称,也可以不加引号。 可以datepart指定为文字或主机变量。...weekday:对于weekday默认设置是周日指定为一周第一天(工作日=1)。 但是,可以一周第一天配置为另一个值,或者可以应用指定星期一为一周第一天ISO 8601标准。...可以datepart指定为带引号字符串或不带引号字符串。...如果同时指定日期和时间,则日期和时间都必须有效。 例如,如果没有指定时间字符串,则可以返回Year值,但如果指定了无效时间字符串,则无法返回Year值。...日期字符串必须完整,格式正确,包含适当数量元素和每个元素数字,以及适当分隔符。 例如,如果省略了Day值,则不能返回Year值。 年必须指定为四位数字。

    1.6K40

    less(1) command

    如果 N 是负数,表示全屏能够显示行数减去 N -"CC, --quotes=CC 更改文件名引用字符。...或者,可以数字指定为屏幕宽度分数,以小数点开始:.5是屏幕宽度一半,.3是屏幕宽度三分之三,以此类推。...如果数字指定为分数,则在调整终端窗口大小时重新计算滚动条位置实际数量,从而使实际滚动条保持在屏幕宽度指定分数 --follow-name 通常,如果在执行 F 命令时重命名输入文件,less...这允许在选项字符串中包含美元符号 -- 该选项标识命令行选项结束,之后参数被解释为文件名,当在文件名首字符是 - 或这 + 时需要使用该选项 + 如果命令行选项以 + 开头,则将该选项其余部分视为初始命令...例如,ESC-^B 可用于向后移动到与末行 < 匹配 < m 后跟任意小写字母,用该字母标记当前位置 ' (单引号)。后跟任何小写字母,返回到先前用该字母标记位置。

    22930

    Linux 命令(89)—— less 命令

    如果 N 是负数,表示全屏能够显示行数减去 N -"CC, --quotes=CC 更改文件名引用字符。...或者,可以数字指定为屏幕宽度分数,以小数点开始:.5是屏幕宽度一半,.3是屏幕宽度三分之三,以此类推。...如果数字指定为分数,则在调整终端窗口大小时重新计算滚动条位置实际数量,从而使实际滚动条保持在屏幕宽度指定分数 --follow-name 通常,如果在执行 F 命令时重命名输入文件,less...这允许在选项字符串中包含美元符号 -- 该选项标识命令行选项结束,之后参数被解释为文件名,当在文件名首字符是 - 或这 + 时需要使用该选项 + 如果命令行选项以 + 开头,则将该选项其余部分视为初始命令...例如,ESC-^B 可用于向后移动到与末行 < 匹配 < m 后跟任意小写字母,用该字母标记当前位置 ' (单引号)。后跟任何小写字母,返回到先前用该字母标记位置。

    4.4K30

    二、第一个java程序:HelloWorld

    ”,如果看不到扩展名,则打开“我电脑”,选择“工具→文件夹选项”菜单(如果你看不到“文件夹选项”,说明你电脑中毒了,用360安全卫士系统修复一下),在弹出对话框中单击“查看”选项卡, 高级设置中...“HelloWorld.java”类文件文件名 与类名(HelloWorld)是一致文件名必须与主类类名保持一致,且两者小写要一致。...如果使用package,则生成为包所指定路径。 7、在Java语言中字母是严格区分大小写,这点不要和C和C++混淆。...四、调试程序 1、保存文件名称“HelloWorld.java” 更改为 “helloWorld.java” ,然后编译运行程序,看看结果,回答为什么?记住出错原因。...2、文件代码 类名 “HelloWorld” 更改为 “Helloworld” ,然后编译运行程序,看看结果,回答为什么?记住出错原因。

    43230

    R语言raster包读取栅格遥感影像

    首先,我们输入如下代码;其中第一句是指定接下来要打开栅格图像路径与文件名,第二句则是通过raster()函数打开这一栅格图像。...前面我们提到了na.rm = TRUE参数,这一参数表示是否消除数据集中无效值NA影响;如果我们不将其设置为TRUE,那么就表示不消除数据集中无效值;而如果我们栅格图像中出现无效值(NoData值...其中,pattern是对文件名称加以匹配,我们用".tif$"表示只筛选出文件名称是以.tif结尾文件;full.names表示是否文件全名(即路径名称加文件名称)返回,ignore.case表示是否不考虑匹配文件名称时小写差异...可以看到,此时我们已经指定路径下.tif格式栅格图像全部提取出来了。   ...接下来,我们通过stack()函数,全部栅格图像数据放入同一个变量中;随后,我们可以打印一下这个变量,查看其中内容。

    44520

    这些规范你需要上点心

    以两个下划线开头但结尾没有下划线变量名(__x)是类成员变量, 交互式模式下,变量名 _ 用于保存最后表达式结果 命名约定 避免使用名称 切勿字符 "l"(小写字母el),"O"(大写字母oh...软件包和模块名称 模块应使用简短小写名称。如果模块名称可以提高可读性,则可以在模块名称中使用下划线。尽管不鼓励使用下划线,Python软件包也应使用短小写全名。...re.sub(pattern, newchar, string): substitue代替,用newchar字符替代与pattern匹配字符所有。...s = s[0].lower()+s[1:] 第一个字母转化为小写。 ---- 函数和方法参数 始终将self作为实例方法第一个参数。始终对类方法第一个参数使用cls。...如果函数参数名称与保留关键字发生冲突,通常最好在末尾附加一个下划线,而不要使用缩写或拼写错误。因此,class_优于clss。

    94440

    Linux基础(强大到流泪findgrep)

    如果 Pattern参数不是简单字符串,通常必须用单引号整个模式括起来。在诸如 [a-z], 之类表达式中,-(减号)cml 可根据当前正在整理序列来指定一个范围。...整理序列可以定义等价类以供在字符范围中使用。如果未指定任何文件,grep会假定为标准输入。...-h,–no-filename 当搜索多个文件时,不显示匹配文件名前缀。 -i,–ignore-case 忽略大小写差别。 -q,–quiet 取消显示,只返回退出状态。0则表示找到了匹配行。...如果用egrep或grep -E,就不用””号进行转义,直接写成’w(es)t.*’就可以了。 grep -i pattern files :不区分大小写地搜索。...默认情况区分大小写 grep -l pattern files :只列出匹配文件名, grep -L pattern files :列出不匹配文件名, grep -w pattern files :

    93220

    Linux命令(32)——grep命令

    其功能是在指定文件中查找一个指定格式或者内容字符串,并将匹配字符串所在行打印出来。如果不指定任何文件名称,或给定文件名为“-”,则从标准输入设备读取数据。grep支持正则表达式搜索文本。...-h,--no-filename:查询多文件时不显示文件名。 -H,--with-filename:查询多文件时显示文件名(默认选项)。 -i,--ignore-case:忽略字符大小写。...grep -n 'test' aa bb cc (5)打印aa中包含有至少5个连续小写字符字符串所有行 grep '[a-z]\{5\}' aa 注意,这里必须使用双引号或者单引号查找pattern...grep aaa file | wc -l 注意: grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索文件不存在...我们利用这些返回值就可进行一些自动化文本处理工作。 (6)grep使用多个条件或查询。

    4.5K20

    Pandas 中三个对列转换小操作

    前言 本文主要介绍三个对列转换小操作: split 按分隔符列分割成多个列 astype 转换列为其它类型 将对应列上字符转换为大写或小写 创建 DataFrame 首先,导入 Pandas 模块...,全名为 Series.str.split,它可以根据给定分隔符对 Series 对象进行划分; " " 按照空格划分,我们可以传入字符串或者正则表达式,如果不指定则按照空格进行划分; n = 1 分割数量...,如果定为 None, 0 或 -1 则返回所有分割。.... expand = True 分割字符串转换为单独列,指定 True 则返回 DataFrame/MultiIndex,如果指定 False 则返回 Series/Index。...df_dev['age'] = df_dev['age'].astype(str) df_dev['salary'] = df_dev['salary'].astype(float) df_dev 将对应列上字符转换为大写或小写

    1.2K20
    领券