Nester.py:AttributeError:'str'对象没有值'write'

时间:2013-05-29 19:41:00

标签: python list module attributeerror

在本书第四章关于Python的持久性之后,他们要求我们在“nester”中修改名为“print_lol”的模块的功能。

这是我的代码。

import sys 
def print_lol(the_list, indent=False, level=0, fh=sys.stdout):

    for each_item in the_list:
        if isinstance(each_item, list):
            print_lol(each_item, indent, level+1, fh) 
        else:
            if indent:
                for tab_stop in range(level):
                    print("\t", end='', file=fh)
            else:
                print(each_item, file=fh)

这是测试代码。

import nester3

pl = nester3.print_lol

cat = ['death', [3, 4, 5, ['life']]]

pl(cat, indent=True, fh='amazing.txt')

当我尝试实际调用此代码时会发生以下情况:

File "tester.py", line 7, in <module>
    pl(cat, indent=True, fh='amazing.txt')
File "/home/ehl/Python/nester/nester3.py", line 39, in print_lol
    print_lol(each_item, indent, level+1, fh) 
File "/home/ehl/Python/nester/nester3.py", line 43, in print_lol
    print("\t", end='', file=fh)

AttributeError:'str'对象没有属性'write'

我不明白我怎么可能添加“写”属性,任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

应该是:

with open('amazing.txt', 'a') as f:
    pl(cat, indent=True, fh=f)

您目前正试图致电print(..., file='amazing.txt'),试图致电'amazing.txt'.write(...)这当然没有意义。

'a'以附加模式打开文件,您可以使用'w'截断并以写入模式打开。