雀巢.py:AttributeError:“str”对象没有值“write”

2024-05-19 19:48:03 发布

您现在位置:Python中文网/ 问答频道 /正文

在《Python中的持久性》一书的第四章之后,他们要求我们修改“nester”中名为“print”的模块的函数。在

这是我的密码。在

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)

这是测试代码。在

^{pr2}$

当我试图实际调用此代码时,会出现以下语句:

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”

我不明白我怎么可能添加“write”属性,任何帮助都将不胜感激。在


Tags: inpysyslineitemlevellistnester
1条回答
网友
1楼 · 发布于 2024-05-19 19:48:03

应该是:

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

您当前正在尝试调用print(..., file='amazing.txt'),它试图调用'amazing.txt'.write(...),这当然没有意义。在

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

相关问题 更多 >