在python中循环浏览文件

时间:2018-07-23 19:24:52

标签: python loops

我在jupyter笔记本上使用python 3.6。

我编写了这段代码以可视化一些数据。

from nilearn import plotting

DMN = plotting.plot_glass_brain("/Users/projets/rmap_seeds/average_rmap_DMN.nii.gz",
                            draw_cross = True, colorbar=True)
plt.show()

我想可视化的文件很多

我想做一个for循环,所以我不必手动编写它们。我只是在这里举了两个例子,但实际上我有数百个。

我尝试过这个:

image = {'average_rmap_DMN', 'average_rmap_CER'}

for i in image :
    image(i) = plotting.plot_glass_brain("/Users/projets/rmap_seeds/", 
    (image{i}), ".nii.gz", draw_cross = True, colorbar=True, threshold=0.7)

我收到此错误:

SyntaxError: invalid syntax

谢谢!

2 个答案:

答案 0 :(得分:0)

Python使用方括号而不是花括号来建立索引,因此您应该执行image[i]来消除语法错误。 但是,在python中遍历列表会返回列表项而不是索引。
i编制索引将不起作用,但是您可以直接使用它:

for img in image:
    do_something(img)

或者使用列表推导

[do_something(img) for img in image]

如果您希望继续对其进行修改,则可以将列表理解的结果分配给一个新变量,这样您的代码就会变成

image = {'average_rmap_DMN', 'average_rmap_CER'}

res = [plotting.plot_glass_brain("/Users/projets/rmap_seeds/", 
    img, ".nii.gz", draw_cross = True, colorbar=True, threshold=0.7) 
    for img in image]

最后,根据您的代码判断,我建议您阅读一些入门python教程。像this这样的面向matlab用户的东西可能是一个不错的起点,或者this one是一般信息。

答案 1 :(得分:0)

在您的示例中,您有两个表达式image(i)image{i}

  1. image(i)这是一个问题,因为字符串不可调用(您不能传递参数,也不能使它们像函数一样工作)。这不是有效的操作,因此在这种情况下将引发错误。 (Python分析器认为您正在尝试分配给函数调用。)

  2. image{i}这是语法错误。 {i}是一个集合文字,因此您的表达式就像拥有x 1,这在Python中是无效的语法。如果您要查找索引,则为image[i]

但是接着是一个问题:images应该是集合还是字典?因为如果它是字典,那么您正在遍历键,因此应该为images[i]。但是,如果它是一个集合(似乎是您正在使用的集合),则会出现更多问题。

  1. 无法索引集
  2. 您不能按字符串索引列表或字符串。

按字符串索引问题,当您说for string in strings:时,string是容器中的字符串,而不是它的整数索引。

所以看来您的代码中存在一些更严重的结构性问题。您应该考虑所需的数据结构,并研究内置容器listdictsettuple等的方法。