我遇到了错误。我一直试图将文本文件附加到自己身上:
file_obj = open("text.txt", "a+")
number = 6
def appender(obj, num):
count = 0
while count<=num:
read = file_obj.read()
file_obj.seek(0,2)
file_obj.write(read)
count+=1
appender(file_obj, number)
但是,text.txt
文件会填充奇怪的ASCII符号。首先,该文件只包含一个简单的&#34; hello&#34;,但在代码之后,它包含:
hellohello䀀 猀· d娀 Ť搀Ŭ娀ͤ攀ɪ昀Ѥ萀 夀ɚ搀ť樀Ŧ搀茀 婙ݤ攀Ѫ昀ࡤ萀 夀њ搀
ɥ攀ժ昀
茀 婙攀ť樀ɦ搀茀 婙萀 ݚ搀࡚攀४攀ƃ娀搀⡓ 癳 祐桴湯䌠慨慲瑣牥䴠灡楰杮
䌠摯捥挠ㅰ㔲‰敧敮慲整牦浯✠䅍偐义升嘯久佄卒䴯䍉䙓⽔䥗䑎坏⽓偃㈱〵吮员‧楷桴朠湥潣敤祰
മഊ椊 and so on.
任何帮助将不胜感激
答案 0 :(得分:1)
我想我可以解决你的问题,即使我无法重现它。出现逻辑错误:写入后,您无法返回文件的开头进行读取。在分析方面,您没有做任何事情来诊断问题。至少,使用Origin
语句查看您正在阅读的内容:这可以很好地突出显示问题。这是我使用的循环:
print
这给出了预期的输出128(2 ^(6 + 1))重复&#34;你好&#34;。
<强>扩展强>
我建议您学习使用count = 0
while count<=num:
file_obj.seek(0) # Read from the beginning of the file.
read = file_obj.read()
print(count, read) # Trace what we're reading.
file_obj.seek(0, 2)
file_obj.write(read)
count+=1
循环和for
习语。这些将大大缩短您的程序并提高可读性。
答案 1 :(得分:0)
我正在使用此代码,一切都按预期工作:
with open("file.txt") as f:
for line in f:
f.write(line)
答案 2 :(得分:0)
您的模式错误 - 使用'r+'
而不是'a+'
。有关模式列表和阅读文件的说明,请参阅this link。