【发布时间】:2018-08-03 19:59:56
【问题描述】:
希望这个问题相对容易回答,因为我还是 Python 新手。
我需要遍历名称为 [x]img[y] 的图像,其中 x 和 y 是确定如何处理图像的标识符。 x 确定进程,其值为 1 或 2,y 确定要在处理中使用的值之一。
所以,在伪代码中:
directory = 'my/path/to/images'
for image in directory:
if x = 1:
do process a with y
elif x = 2:
do process b with y
else: print "ERROR"
我对代码和从字符串中提取值以拼凑我见过的各种不同示例还不够熟悉。我觉得我应该能够将字符串转换为数组并将第 1 和第 5 个值读取为整数,对吧?
非常感谢您的帮助,如果您想更好地了解我想通过这个项目完成什么,我已经创建了一个 GitHub 存储库here。
非常感谢:)
编辑
感谢 Ely 让我走到这一步,但这又带来了另一个错误。这是我用来打开目录的测试代码,其中包含文件 1img2.png、1img4.png 和 2img1.png。
import os
import re
DIRECTORY = '/home/pi/Desktop/ScannerDev/TestPhotos/'
for img_filename in os.listdir(DIRECTORY):
x, y = os.path.splitext(img_filename)[0].split('img')
print 'Camera is ', x
print 'Image is ', y
"""
for img_filename in os.listdir(DIRECTORY):
a = re.search('^(.*)img(.*)\.png$', img_filename)
if a is None:
break
else:
x = a.group(1)
y = a.group(2)
print 'Camera is ', x
print 'Image is ', y
"""
返回:
Camera is 2
Image is 1
Traceback (most recent call last):
File "iteratorTEST.py", line 10, in <module>
x, y = os.path.splitext(img_filename)[0].split('img')
ValueError: need more than 1 value to unpack
【问题讨论】:
-
@usr2564301 当我的问题解决后,我会接受解决问题的答案。如果您仔细查看我的编辑,您会看到返回代码显示 ValueError。还有“剩余的问题”:)
-
@AcrimoniousMirth 测试目录中是否有任何其他类型的文件正在被迭代?我使用您正在使用的相同图像名称和目录名称创建了自己的测试目录。当我复制/粘贴您的代码并在我的笔记本电脑上运行它时,它可以正常工作。
-
不,这很奇怪。它完全是空的,但对于这 3 张图像。如果有另一种类型的文件,我也会期望这个问题。我将尝试重命名所有图像,因为这就是我目前所能想到的。 编辑我发现了问题。一些隐藏的文件夹。如果不是那种类型,我将不得不添加一个跳过的子句
-
你也可以过滤掉不符合你假设的东西,比如
for img_filename in filter(lambda x: x.endswith('.png'), os.listdir(DIRECTORY)。 -
@ely hahah,实际上,一旦我找到隐藏文件并将其放在单独的答案中以使其清楚,我就直接了解了这一点。感谢您的所有帮助:)
标签: python string loops directory