我有一个需要循环遍历的 .jpg 文件目录,必须使用 python program.py directory/*.jpg
从命令行调用它
我的代码只能找到该文件夹中的第一个图像。
import sys, glob
arg = sys.argv[1]
files = glob.glob(arg)
for fname in files:
print(fname)
它只打印出文件夹中第一个文件的名称,当我打印列表文件的长度时,它返回1。
编辑: print(arg) 正在打印第一个文件的名称,而不是目录,我该如何解决这个问题,sys.argv[1] 应该是目录/*.jpg 不是?
最佳答案
您的代码没有问题,但您没有正确转义通配符。 尝试运行您的脚本:
python program.py directory/\*.jpg
当您运行python program.py directory/*.jpg
时shell 扩展通配符,结果为 argv[1]
成为第一个匹配的文件名,从而导致 glob 被调用而不是 <directory>/*.jpg
但与 <directory>/<firstFile>
如果添加print arg
,您可以很容易地看到这一点在全局调用之前。
例如,如果您的目录包含两个文件,0606163.jpg 和 060611231.jpg
python program.py directory/*.jpg
将相当于 python program.py directory/0606163.jpg directory/060611231.jpg
关于python - 循环遍历目录中给定类型的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47076736/