【问题标题】:Printing output formatting打印输出格式
【发布时间】:2013-05-16 17:57:44
【问题描述】:

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

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

将在新行上分别打印出每个元组,但事实并非如此。我需要在这里某个地方循环还是我的语法完全错误?

【问题讨论】:

    标签: python printing tuples output


    【解决方案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")   
    

    【讨论】:

    • @bbesase 很高兴有帮助。 :)
    【解决方案2】:

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

    按照您的做法,它只会一遍又一遍地写入相同的foundFiles2 列表,具体取决于files 中有多少索引。

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

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

    这将转到第一项,然后写它,然后是第二项,然后写它等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多