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