问题描述:
TypeError: TextIOWrapper.write() takes exactly one argument (2 given)
Traceback (most recent call last):
File "F:\xhktSoft\python\xhkt\考生文件夹\PY301-1.py", line 20, in <module>
fo.write(line,"\n")
TypeError: TextIOWrapper.write() takes exactly one argument (2 given)
这里是哪出错了。
源代码如下:
fi = open("论语.txt", "r")
fo = open("论语-原文.txt", "w")
flag=False
for line in fi:
line=line.strip()
if "【原文】" in line:
flag = True
continue
if "【注释】" in line:
flag = False
if flag:
if line:
fo.write(line,"\n")
fi.close()
fo.close()
问题解答:
你的代码在写入文件时遇到了 TypeError: TextIOWrapper.write() takes exactly one argument (2 given)
错误,这是因为 fo.write()
方法只接受一个参数,而你传递了两个参数 line
和 "\n"
。
你需要将 line
和 "\n"
连接成一个字符串,并将它们作为一个参数传递给 fo.write()
方法。可以使用字符串连接操作符 +
或格式化字符串的方法来实现这一点。
以下是修改后的代码:
fi = open("论语.txt", "r", encoding="utf-8")
fo = open("论语-原文.txt", "w", encoding="utf-8")
flag = False
for line in fi:
line = line.strip()
if "【原文】" in line:
flag = True
continue
if "【注释】" in line:
flag = False
if flag:
if line:
fo.write(line + "\n") # 合并 line 和 "\n" 为一个字符串
fi.close()
fo.close()
解释
-
文件打开方式:
fi = open("论语.txt", "r", encoding="utf-8")
:使用 UTF-8 编码读取文件,确保支持中文字符。fo = open("论语-原文.txt", "w", encoding="utf-8")
:使用 UTF-8 编码写入文件。
-
字符串合并:
fo.write(line + "\n")
:将line
和换行符"\n"
合并为一个字符串,传递给fo.write()
方法。
这样修改后,代码可以正确地将提取到的内容写入到新文件中。