Python 循环浏览目录中给定类型的文件

Python 循环浏览目录中给定类型的文件,python,file,Python,File,我有一个需要循环使用的.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)是打印第一个文件的名称,而不是目录,如何解决这个问题,

我有一个需要循环使用的.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?


您可以使用
listdir
也许

import os
jpgFiles = os.listdir('your/path/here')

for file in jpgFiles:
        print(file)

代码没有问题,但没有正确转义通配符。 尝试以以下方式运行脚本:

python program.py directory/\*.jpg
当您运行
python program.py directory/*.jpg
时,shell会扩展通配符,从而使
argv[1]
成为第一个匹配的文件名,从而导致glob不是用
/*.jpg
调用的,而是用
//code>

如果在glob调用之前添加
print arg
,您很容易看到这一点

例如,如果您的目录包含两个文件,0606163.jpg和060611231.jpg


python program.py directory/*.jpg
相当于
python program.py directory/0606163.jpg directory/06060611231.jpg

不看目录/目录结构就没什么可说的了冒着问一个愚蠢问题的风险,你绝对确定该目录中有超过1个jpg吗?可能是
walk()
os
模块的方法可以帮助您。该目录中有25个jpg,我几乎完全确定目录/结构没有问题
ls directory/*.jpg的输出是什么?文件所在的目录名是什么?不支持通配符。@ventsyv没有使用通配符,代码就像一个符咒。Thanks,这很有效。我还通过简单地将sys.argv调用放入循环中解决了这个问题。
对于sys.argv[1:]:print(fname)
@Chaz如果您依赖shell变量扩展,那么就不需要调用glob。
python program.py directory/\*.jpg