将文本文件附加到文本文件

时间:2018-03-21 17:14:24

标签: python file text

我遇到了错误。我一直试图将文本文件附加到自己身上:

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.

任何帮助将不胜感激

3 个答案:

答案 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