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

标签 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 不是?

最佳答案

您的代码没有问题,但您没有正确转义通配符。 尝试运行您的脚本:

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/

相关文章:

python - 使用 smtpd.DebuggingServer 作为 STMP 服务器从 python 发送电子邮件

python - 检查字符串是否包含希伯来字符的正确方法

C- 文件输入/输出缓冲区和 setvbuf()

java - 如何使我的文件读取/写入程序更快?

java - 有没有一种通用的文件访问方式,既适用于 Android 也适用于 PC?

python - Python使用SMTP发送电子邮件而无需身份验证

python - 如何转义实际上名为 <parent> 的 BeautifulSoup ISO 标签中的父属性?

python - 如何在 Python 中拆分 1 次或多次出现的分隔符?

c - 为什么在C中,读取文件时必须使用字符数组?

python - 将文本中的键值对解析为字典