Python 2.7 如何添加参数以从同一目录中查找某个关键字

Python 2.7 如何添加参数以从同一目录中查找某个关键字,python-2.7,Python 2.7,我有一个图像列表,以某种模式命名拼贴。 前 yahoo_jp.png yahoo_us.png yahoo_uk.png 雅虎中国.png 所有文件都在同一目录中。目前,我只能发送一个命令来制作文件夹中所有图像的拼贴,但我想做的是能够从shell命令发送某个关键字,并在文件夹中查找关键字匹配的文件列表,然后制作拼贴 例如shell命令 使_collage.py-o my _collage.png-w 540-i 840新参数-->-a“_us” -运行此命令时,它将仅对包含关键字“\u us

我有一个图像列表,以某种模式命名拼贴。 前

  • yahoo_jp.png
  • yahoo_us.png
  • yahoo_uk.png
  • 雅虎中国.png
所有文件都在同一目录中。目前,我只能发送一个命令来制作文件夹中所有图像的拼贴,但我想做的是能够从shell命令发送某个关键字,并在文件夹中查找关键字匹配的文件列表,然后制作拼贴

例如shell命令 使_collage.py-o my _collage.png-w 540-i 840新参数-->-a“_us” -运行此命令时,它将仅对包含关键字“\u us”的文件进行拼贴。因此,输出将是仅包含“_us”图像的拼贴

import argparse
导入操作系统
随机输入
从PIL导入图像
def make_拼贴(图像、文件名、宽度、初始高度):
"""
从“图像”制作一幅宽度等于“宽度”的拼贴图像,并保存到“文件名”。
"""
如果不是图像:
打印('未找到拼贴图像!')
返回错误
边距大小=2
#运行,直到找到合适的图像排列
尽管如此:
#将图像复制到图像列表
图像列表=图像[:]
coefs_线=[]
图像_行=[]
x=0
当图像显示在列表中时:
#获取第一张图像并将其大小调整为“初始高度”`
img\u path=images\u list.pop(0)
img=Image.open(img\u路径)
图像缩略图((宽度、初始高度))
#当'x'超出'width'时,开始下一行
如果x>宽度:
coefs_行。追加((浮点(x)/宽度,图像_行))
图像_行=[]
x=0
x+=图像大小[0]+边距大小
图像\u行.append(img\u路径)
#最后添加最后一行图像
coefs_行。追加((浮点(x)/宽度,图像_行))
#通过减少“init_height”(如果有的话)来压缩线,并使用一个或更少的图像

如果len(coefs_line)最简单的方法是将
glob.glob()
os.listdir()
一起使用,尽管
glob()
使用bash语法,所以您需要输入
*\u us*

首先导入它:

from glob import glob
然后添加一个“模式”可选位置参数:

parse.add_argument('-p', '--pattern', nargs="?", default=None, help="enter a grep-like expansion.")
最后,将
#get images
下的行更改为如下内容:

if args.pattern:
    files = [fn for fn in glob(os.path.join(args.folder, args.pattern))]
else:
    files = [os.path.join(args.folder, fn) for fn in os.listdir(args.folder)]

嗨,Rob,我在最后一个括号“…args.pattern]”上发现了一个语法错误,这一个在运行->]oops时突出显示!忘记关闭
glob()
将被修复。还要注意,我删除了顶部列表中的第一个
os.path.join()
glob()
默认返回完整的绝对路径。嗨,Rob,这一次我有一个错误说“'module'对象没有属性'join',错误指向这一行->”文件=[fn代表glob中的fn(os.join(args.folder,args.pattern))]”嗨,Rob,我在更改了行
files=[fn代表glob中的fn(os.join))后能够解决这个问题(args.folder,args.pattern))]
to
files=[fn for glob中的fn(os.path.join(args.folder,args.pattern))]
if args.pattern:
    files = [fn for fn in glob(os.path.join(args.folder, args.pattern))]
else:
    files = [os.path.join(args.folder, fn) for fn in os.listdir(args.folder)]