我有一个需要循环的.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 no?
答案 0 :(得分:1)
您的代码没有任何问题,但您没有正确地转义您的通配符。 尝试将脚本运行为:
python program.py directory/\*.jpg
当您运行python program.py directory/*.jpg
时,shell会扩展通配符,导致argv[1]
成为匹配的第一个文件名,从而导致不使用<directory>/*.jpg
而是使用{{1}调用glob }
如果你在glob调用之前添加<directory>/<firstFile>
,你可以很容易地看到。
例如,如果您的目录包含两个文件,0606163.jpg和060611231.jpg
print arg
将等同于python program.py directory/*.jpg
答案 1 :(得分:0)
我个人使用os.walk()
。
import os
for root, dirs, files in os.walk('YOUR_PATH_OR_SYS_ARG_HERE'):
for file in files:
if file.endswith('.jpg'):
print(file)
答案 2 :(得分:0)
您可以使用listdir
吗?
import os
jpgFiles = os.listdir('your/path/here')
for file in jpgFiles:
print(file)