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) 我有一个前端构建,它使用 Dockerfile 的变体进行多个步骤:开发、CI(使用 Jenkins)和生产。我不想连续下载用于 CI 和生产构建映像的 node_modules(这两者都在同一个盒子上连续发生)。Dev 的 node_modules 托管在一个卷上,以降低重新启动开发容器的开销。
这三个阶段都共享同一个.dockerignore文件,其中有一行不包括node_modules. 是否可以通过类似的方式添加 node_modules COPY node_modules/* node_modules/?我徒劳地寻找在 CI 和生产构建的构建部分期间使用绑定安装的方法。这似乎是不可能的。
我尝试遍历与某个扩展名匹配的所有文件,包括隐藏文件夹中的文件。到目前为止,我还没有找到使用iglob的方法。这适用于除以点开头的所有文件夹之外的所有文件夹:
import glob
for filename in glob.iglob('/path/**/*.ext', recursive=True):
print(filename)
Run Code Online (Sandbox Code Playgroud)
我试图将点添加为可选字符无济于事。我真的很想使用glob而不是驻留在os.walk上
假设我有一本字典:
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) 注意:自创建此线程以来,该模式已从 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)
我正在开发一个大型遗留项目,并试图从 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。
我正在阅读 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) 给定目录结构:
/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 文件。
假设我有一个目录列表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 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 模式时犯了一些错误吗?或者是否存在更好的方法来仅列出最深的_级别元素?
glob ×10
python ×4
python-3.x ×3
directory ×2
java ×2
bash ×1
dictionary ×1
docker ×1
dockerfile ×1
grunt-ssh ×1
hidden-files ×1
jenkins ×1
minimatch ×1
node-modules ×1
node.js ×1
path ×1
pathlib ×1
php ×1
sonarqube ×1
subdirectory ×1
wildcard ×1