循环遍历目录中给定类型的文件

时间:2017-11-02 13:38:15

标签: 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)是打印第一个文件的名称,而不是目录,我该怎么解决这个问题,sys.argv [1]应该是目录/ * .jpg no?

3 个答案:

答案 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)