OSError: [Errno 22] Invalid argument: 'The Game (John Smith)\n.txt'

OSError: [Errno 22] Invalid argument: 'The Game (John Smith)\n.txt'

第 37 行:

  with open("{}.txt".format(cb), 'w', encoding="utf8") as wrt:

OSError:[Errno 22] 无效参数:'The Game (John Smith)\n.txt'

我正在尝试编写文件并根据书名命名它们。我相信我得到上面的错误是因为标题中的“\n”,我试图删除它,但没有成功。这是生成错误的代码部分

#Convert book title into string
            title = str(cb)
            title.replace("\n",'')
            title.strip()
#write the book notes in a new file
            with open("{}.txt".format(cb), 'w', encoding="utf8") as wrt:
                wrt.write(content)
                wrt.close

我知道这是错误所在,因为如果我给文件一个标题,它就可以正常工作。 cb 只是当前书籍的一个变量,等于列表值,一旦列表值与从文本文件中读取的行匹配,就会定义 cb。我成功地编写了一个新的文本文件,其中包含从以前的文本文件中有选择地收集的“内容”。

您正在使用 replace 而未将其分配给变量,请记住 stripreplace 不会就地更改变量。这应该有效:

title = title.replace("\n",'')
title = title.strip()
with open(f"{title}.txt", 'w', encoding="utf8") as f:
    f.write(content)

如果以字符串形式存储书名的变量是 title 那么也许您应该在格式化您必须打开的文件的名称时将其作为参数传递:with open("{}.txt".format(title), 'w', encoding="utf8") as wrt: