1

リストを取得して出力ファイルに出力するこの関数があります。

 def writeToFile(files):

for path2 in files:
    fi= open(fileo, 'w')
    fi.truncate()
    fi.write('\n' + str(foundFiles2))
    fi.close()


foundFiles2 = [
'bb.TechnicalDefinition.UnitTests.vbproj'
'bb.Units.UnitTests.vbproj'
'bb.Utilities.UnitTests.vbproj'
'bb.Visualization.UnitTests.vbproj' ]

問題なくファイルに出力されますが、リスト内のすべてのタプルの後に新しい行を出力したいと考えています。ただし、ファイルに書き込むと、次のようになります。

'bb.APDS.UnitTests.vbproj', 'bb.DatabaseAPI.UnitTests.vbproj', 'bb.DataManagement.UnitTests.vbproj', 

私は思った

fi.write('\n' + str(foundFiles2))

各タプルを新しい行に個別に出力しますが、そうではありません。ここのどこかにループが必要ですか、それとも構文が間違っているだけですか?

4

2 に答える 2

1

ループの前にファイルを開き、forfor ループの後にファイルを閉じます (または、withashwini が提案したように使用します。これは自動的に行われるためです)。

あなたが行っている方法では、にあるfoundFiles2インデックスの数に応じて、同じリストを何度も書き込むだけfilesです。

foundFiles2が反復したいリストである場合は、forステートメントでそれを使用する必要があります。

for item in foundFiles2:
     fi.write(item+'\n')

これは最初のアイテムに移動してから書き込み、次に2番目のアイテムに移動してから書き込みます。

于 2013-05-16T18:10:28.387 に答える
1

strリストのバージョンを出力する代わりに、リストを反復処理する必要があります。

>>> lis = [1,2,3]
>>> str(lis)      #str just returns a string representation of the string
'[1, 2, 3]'
>>> for x in lis : #use for loop to iterate over individual items of the list
...     print x
...     
1
2
3

あなたのコード:

for path2 in files:
    #"w" mode automatically truncates the file for you
    # Always use `with` statement for handling files, it automatically
    # closes the file.     
    with open(fileo,"w") as f:    
        for text in foundFiles2:  #iterate over each value in the list
            f.write(text+"\n")   
于 2013-05-16T18:02:03.153 に答える