如何修复此字符串格式错误

时间:2019-07-16 15:23:02

标签: python

我使用函数导入图像,但是当我调用函数时出现错误

not enough arguments for format string

第一个图像名称为i_00000.tiff,最后一个图像名称为i_12000.tiff

这是我使用的函数,我想我应该拥有与变量一样多的%s,但我不知道该怎么做

for f in range(x_orig.shape[0]):
        img    = Image.open(dirname + 'img_t1_%s.tiff' % str(f))
        img    = np.array(img)
        x_orig[f] = img


    path = 'labels_reg_holo.csv'    
    labels = pd.read_csv(path)
    y_orig = np.array(labels)

    return x_orig, y_orig



x_orig, y_orig = loadImages()
x_orig = x_orig.reshape(-1, x_orig.shape[1], x_orig.shape[2],1)
x_orig.shape, y_orig.shape

,错误消息是

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-83-bdd3c1ba7737> in <module>
----> 1 x_orig, y_orig = loadImages()
      2 x_orig = x_orig.reshape(-1, x_orig.shape[1], x_orig.shape[2],1)
      3 x_orig.shape, y_orig.shape

<ipython-input-82-82957c28e02f> in loadImages()
      5 
      6     for f in range(x_orig.shape[0]):
----> 7         img    = Image.open(dirname + 'img_t1_%s%s.tiff' % str(f))
      8         img    = np.array(img)
      9         x_orig[f] = img

TypeError: not enough arguments for format string

2 个答案:

答案 0 :(得分:1)

stacktrace中的代码与您发布的代码不同,但是问题在于以下行:

img = Image.open(dirname + 'img_t1_%s%s.tiff' % str(f))

有两个%s格式标记,只有一个字符串str(f)被传递。

答案 1 :(得分:0)

考虑使用format()函数。易于使用和易于阅读。

Image.open(dirname + 'img_t1_{fname}.tiff'.format(fname=str(f)))