打印输出格式

时间:2013-05-16 17:57:44

标签: python printing tuples output

我有这个函数,它接受一个列表并将其打印到outfile:

 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))

会在新行上分别打印出每个元组,但事实并非如此。我在这里需要一个循环吗?或者我的语法是否完全错误?

2 个答案:

答案 0 :(得分: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")   

答案 1 :(得分:1)

for循环之前打开文件并在for循环之后关闭文件(或者像ashwini建议的那样使用with,因为它会自动执行此操作。)

您采用的方式是,它只会反复编写相同的foundFiles2列表,具体取决于files中的索引数量。

如果foundFiles2是您要迭代的列表,那么您需要在for语句中使用它:

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

这将转到第一个项目,然后写入,然后是第二个项目,然后将其写入等等。