在循环中编写文件的麻烦(Python)

时间:2016-06-05 20:23:31

标签: python

我在使用以下Python代码时遇到了问题。它运行没有错误,但它并没有给我预期的输出;根本没有文件被写入。

for l in h:                                                   
    r=l.rfind(",")+1
    s=l[r:-2]
    j=0
    while j<18:
        if s[j]==1:
            f=codecs.open("genre_"+str(j)+".csv","w","utf-8")
            f.write(l)
            f.close()
        j=j+1
  • h是一个字符串列表,通常类似于1,32,3.5,1112484819,000000000000101100\r\n
  • sh中字符串的结尾,特别是最后一个数字字符串
  • 对于字符串s中的每个1,while循环将h的当前字符串写入相应的索引genre_[num].csv文件

因此,例如,h[2]是上面的示例字符串,文件genre_12.csvgenre_14.csvgenre_15.csv应该随之写入。事情是,在运行代码之后,这些类型文件甚至都没有被创建。

我已经尝试了其他代码变体(&#39;将codecs.open作为f:&#39;)但是没有更好的表现。我错过了一些明显的东西吗?

2 个答案:

答案 0 :(得分:0)

您需要缩进for循环中的代码。缩进在python中非常重要,因为没有使用大括号或分号。希望这能解决您遇到的问题!

:) Derek

.blank1 {
    background-color: white;
    display: block;
    float: left;
    width: 9%;
    height: 9%;
    margin: 10px 30px 60px 65px;
}

答案 1 :(得分:0)

问题是您将s设置为包含s=l[r:-2]的字符串,然后检查带有if s[j]==1:

的int

由于从未满足条件,因此不会写入任何文件。检查字符串“1”,它将起作用:

for l in h:                                                  
    r=l.rfind(",")+1
    s=l[r:-2]
    j=0
    while j<18:
        if s[j]=="1":
            f=codecs.open("genre_"+str(j)+".csv","w","utf-8")
            f.write(l)
            f.close()
        j=j+1

`