标签: glob

getting file list using glob in python

I have a list of csv files in mydir.I want to get the list of file names. however using glob as below is returning an empty list.

import glob

mydir = "C:\Data"

file_list = glob(mydir + "*.csv")
print('file_list {}'.format(file_list))
Run Code Online (Sandbox Code Playgroud)

python glob python-3.x

6
推荐指数
1
解决办法
1万
查看次数

有条件地忽略 COPY 上的 .dockerignore 文件

我有一个前端构建,它使用 Dockerfile 的变体进行多个步骤:开发、CI(使用 Jenkins)和生产。我不想连续下载用于 CI 和生产构建映像的 node_modules(这两者都在同一个盒子上连续发生)。Dev 的 node_modules 托管在一个卷上,以降低重新启动开发容器的开销。

这三个阶段都共享同一个.dockerignore文件,其中有一行不包括node_modules. 是否可以通过类似的方式添加 node_modules COPY node_modules/* node_modules/?我徒劳地寻找在 CI 和生产构建的构建部分期间使用绑定安装的方法。这似乎是不可能的。

glob jenkins node-modules docker dockerfile

6
推荐指数
1
解决办法
1366
查看次数

Python 3.6 glob包含隐藏的文件和文件夹

我尝试遍历与某个扩展名匹配的所有文件,包括隐藏文件夹中的文件。到目前为止,我还没有找到使用iglob的方法。这适用于除以点开头的所有文件夹之外的所有文件夹:

import glob
for filename in glob.iglob('/path/**/*.ext', recursive=True):
    print(filename)
Run Code Online (Sandbox Code Playgroud)

我试图将点添加为可选字符无济于事。我真的很想使用glob而不是驻留在os.walk上

glob hidden-files python-3.x

6
推荐指数
4
解决办法
2014
查看次数

字典键中的通配符

假设我有一本字典:

rank_dict = {'V*': 1, 'A*': 2, 'V': 3,'A': 4}
Run Code Online (Sandbox Code Playgroud)

如您所见,我在 V 的末尾添加了一个 *。而 3 可能只是 V 的值,我想要 V1、V2、V2234432 等的另一个键......我想对照:

checker = 'V30'
Run Code Online (Sandbox Code Playgroud)

并获得价值。什么是正确的语法?

for k, v in rank_dict.items():
    if checker == k:
        print(v)
Run Code Online (Sandbox Code Playgroud)

python dictionary glob wildcard python-3.x

6
推荐指数
1
解决办法
3595
查看次数

Glob 模式不匹配任何内容

注意:自创建此线程以来,该模式已从 PHP 文档中删除。

根据PHP 文档,该模式...递归地匹配所有子目录,但是当我尝试使用它时,没有匹配任何文件。

根据文档,glob自 PHP 5.1 以来没有改变,但如果重要的话,我使用的是 PHP 7.2.24 。

目录结构:

.
??? bar
?   ??? bar_file
??? foo
    ??? 1
    ?   ??? foo_1_file
    ??? foo_file
Run Code Online (Sandbox Code Playgroud)

PHP:

var_dump(glob('./.../*')); // prints array(0) {}
var_dump(glob('./.../foo_file')); // prints array(0) {}
Run Code Online (Sandbox Code Playgroud)

我知道有一个解决这个问题的方法,但我想知道是否有 PHP 本地解决方案,如果没有,为什么 PHP 参考文档有缺陷。

php directory glob

6
推荐指数
1
解决办法
472
查看次数

sonar-project.properties 中的 Glob

我正在开发一个大型遗留项目,并试图从 SonarQube 开始对其进行组件化。我正在配置一个多模块项目sonar-project.properties。这很好用。但是,我在精确识别源文件夹时遇到问题。

不幸的是,我们的模块在文件系统中没有整齐地分开。项目被分成许多Eclipse项目,几个Eclipse项目一起组成一个模块。当然,我可以列举所有的项目,但是这非常麻烦,因为项目很多。这是我们的目录结构的(简化)版本:

projects/
    moduleAsubmodule1/
        src/
            com/mycompany/moduleA/submodule1/
    moduleAsubmodule2/
        src/
            com/mycompany/moduleA/submodule2/
    moduleBsubmodule1/
        src/
            com/mycompany/moduleB/submodule1/
    moduleBsubmodule2/
        src/
            com/mycompany/moduleB/submodule2/
    moduleBsubmodule3/
        src/
            com/mycompany/moduleB/submodule3/
Run Code Online (Sandbox Code Playgroud)

想象一下更多的模块和子模块,其中项目名称被连接起来,但包名称被很好地划分,使得区分这些模块和子模块变得更容易。

moduleA.sonar.projectBaseDir=.
moduleA.sonar.sources=projects/**/src/com/mycompany/moduleA/**/*
moduleA.sonar.test=projects/**/*.test/src/com/mycompany/moduleA/**/*
Run Code Online (Sandbox Code Playgroud)

根据文档,这应该可以排除。但是,我收到以下错误消息:

16:10:44 ERROR: Unable to execute Sonar
16:10:44 ERROR: Caused by: The folder 'projects/**/src/com/mycompany/mymodule/**/*' does not exist for 'XXX:XXX:mymodule' (base directory = D:\XxxSonar\.)
Run Code Online (Sandbox Code Playgroud)

所以我猜 glob 不适用于来源?如果确实如此,我该怎么办?

我们使用SonarQube 4.1.2。

java glob sonarqube

5
推荐指数
1
解决办法
3024
查看次数

Java 路径中的星号

我正在阅读 OCA/OCP Java SE 和程序员 I 和 II 学习指南。第520页有一个用于匹配的方法:

public void matches(Path path, String glob){
    PathMatcher matcher = FileSystems.getDefault().getPathMatcher(glob);
    System.out.println(matcher.matches(path));
}
Run Code Online (Sandbox Code Playgroud)

现在,在下一页上有一段使用此方法的代码:

public static void main(String [] args){
    Path path1= Paths.get("0*b/test/1");
    Path path2 = Paths.get("9\\*b/test/1");
    Path path3 = Paths.get("01b/test/1");
    Path path4 = Paths.get("0*b/1");
    String glob = "glob:[0-9]\\*{A*,b}/**/1";
    matches(path1,glob);
    matches(path2,glob);
    matches(path3,glob);
    matches(path4,glob);
}
Run Code Online (Sandbox Code Playgroud)

按照书上的说法结果应该是: true false false false

但是,当我尝试运行它时,出现以下异常:

Exception in thread "main" java.nio.file.InvalidPathException: Illegal char <*> at index 1:       0*b/test/1
    at sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
    at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
    at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
    at sun.nio.fs.WindowsPath.parse(WindowsPath.java:94)
    at sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:255) …
Run Code Online (Sandbox Code Playgroud)

java glob path

5
推荐指数
1
解决办法
2891
查看次数

Globs &amp; NPM Minimatch:递归匹配除特定目录之外的所有文件和目录

给定目录结构:

/Users/doge/very/amaze.js
/usr/local/bin/wow
/node_modules/
/css/
/css/somefile.css
/lib/
/somelib/
/anotherlib/somedir/finallib.js
/index.html
/somefile.test
/somelib/file.html
/firstdir/seconddir/file.css
/node_modules.txt
Run Code Online (Sandbox Code Playgroud)

如何使用 extglob 只排除 node_modules 目录?

/!(node_modules)
Run Code Online (Sandbox Code Playgroud)

上面的内容匹配根级别的所有内容,除了 node_modules 目录和文本文件(我们想要包含)之外。它也不会递归地遵循匹配目录。

/!(node_modules)/**
Run Code Online (Sandbox Code Playgroud)

这个更接近,但它也排除了根目录中的所有文件。即使它包含根级别的文件,我猜它也会排除 node_modules.txt 文件。

PS 这是使用grunt-sshminimatch节点模块进行文件匹配。

bash glob node.js minimatch grunt-ssh

5
推荐指数
1
解决办法
2155
查看次数

如何在Python中使用glob指定目录?

假设我有一个目录列表dirs

dirs = ['C:\\path\\to\\dir1','C:\\path\\to\\dir2','C:\\path\\to\\dir3']
Run Code Online (Sandbox Code Playgroud)

在每个目录中,都有几个我想要获取列表的 Excel 文件。如果我只是使用glob.glob("*.xls*")它,只会给我当前工作目录中的excel文件列表,但我想专门获取“C:\path\to\dir1”、“C:\path\to”中的excel文件列表\dir2" 等

我努力了

import glob
for direc in dirs:
    print(glob.glob(direc + "*.xls*")
>>>[]
Run Code Online (Sandbox Code Playgroud)

但这只会产生空列表。

我在这里做错了什么?如何获取 中每个目录中的 excel 文件列表dirs

python glob

5
推荐指数
1
解决办法
4912
查看次数

如何使用 Pathlib 在 Python 中迭代目录

我正在使用 Python 3,我需要对文件夹执行一些操作,使用 Pathlib 并检查它们是否是文件夹。

我要做的操作是这样的:

from pathlib import Path
source_path = Path("path_directory_string")

for a in source_path.iterdir():
    if a.is_dir():
        for b in a.iterdir():
            if b.is_dir():
                for c in b.iterdir():
                    if c.is_dir():
                        # do something
Run Code Online (Sandbox Code Playgroud)

我的问题是是否有更好的方法来做到这一点。回顾过去提出的问题,看起来最好的方法是使用 Pahtlib 的 glob 方法。因此,由于我有三个深度级别,所以我尝试了以下方法:

for a in source_path.glob("**/**/**"):
    if a.is_dir():
        print(a)
Run Code Online (Sandbox Code Playgroud)

它几乎可以工作了。问题是,这不仅返回最深层的文件夹,还返回它们的父文件夹。我在格式化 glob 模式时犯了一些错误吗?或者是否存在更好的方法来仅列出最深的_级别元素?

python directory glob subdirectory pathlib

5
推荐指数
1
解决办法
8035
查看次数