python glob与nam中的[]目录有关

2024-10-01 17:22:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用glob查找目录中的所有*.shp文件,但目录名包含“[]”,这导致glob失败。有什么解决办法吗?在

我的代码是:

glob.glob(sub_dir+os.sep+'soilmu_a_*.shp')

其中sub_dir是:

^{pr2}$

我得到的错误消息是:

*** error: bad character range

Tags: 文件代码目录消息os错误direrror
3条回答

@isedev在字符范围上是对的,但是双重替换不是明智之举。在

import re
ptn = re.sub('([\[\]])','[\\1]',ptn)

str.translate()也可以

是的,当父目录路径中有[]时,glob找不到子目录,我没有收到错误消息!我偶然发现了这个问题。我真希望我收到了一条错误信息。在

我换成了操作系统列表目录为了获得子目录,并且由于我需要子目录的完整路径,我必须将其粘贴回:

subdirs = [d for d in os.listdir(current_full_path) if os.path.isdir(current_full_path + '/' + d)]
for subdir in subdirs:
    subdir_full_path = current_full_path + '/' + subdir

正如手册页中建议的那样,您可以修改您的模式并包装有问题的元字符。将[更改为[[],将]更改为{}(与元字符相对应的单个字符范围)。在

例如:

pattern = sub_dir + os.se p +'soilmu_a_*.shp'
pattern = pattern.replace('[','[[]').replace(']','[]]')
glob.glob(pattern)

相关问题 更多 >

    热门问题