繁体   English   中英

将数据附加到.txt文件

[英]Appending data to .txt file

我是python的新手。 我想创建一个可以生成随机数并将其写入文件的程序,但是我很好奇是否可以将输出写入.txt文件,但使用单个列表。 程序每次执行脚本时,都会创建一个新列表

到目前为止,这是我的代码:

def main():
    import random
    data = open("Random.txt", "w" )

    for i in range(int(input('How many random numbers?: '))):
        line = str(random.randint(1, 1000))
        data.write(line + '\n')
        print(line)


    data.close()
    print('data has been written')
    main()

关于追加或a -

打开一个文件进行追加。 如果文件存在,则文件指针位于文件的末尾。 也就是说,文件处于附加模式。 如果该文件不存在,它将创建一个新文件进行写入。

def main():
    import random
    data = open("Random.txt", "a" ) #open file in append mode
    data.write('New run\n') #separator in file
    for i in range(int(input('How many random numbers?: '))):
        line = str(random.randint(1, 1000))
        data.write(line + '\n')
        print(line)

    data.close()
    print('data has been written')
main()

如果您通读open()的文档,则会注意到:

模式“ r +”,“ w +”和“ a +”打开文件进行更新(读取和写入); 请注意,“ w +”会截断文件。 在区分二进制文件和文本文件的系统上,将“ b”追加到以二进制模式打开文件的模式; 在没有此区别的系统上,添加“ b”无效。

因此,如果要“附加到打开的文件,请使用模式a

例:

f = open("random.txt", "a")
f.write(...)

更新:如果要将条目与后续程序运行分开,则必须在程序可以理解的文件后添加一行。 例如: f.write("!!!MARKER!!!\\n")

完全一样,让letsc回答,但格式更加“ pythonic”

Python 3示例,如OP语法中使用的print()。

import random

def main():   
  with open("Random.txt", "a") as data: 
    print('New run', file=data)
    numbers_count = int(input('How many random numbers?: '))
    for i in range(numbers_count):
      line = str(random.randint(1, 1000))
      print(line, file=data)
      print(line)

  print('data has been written')

if __name__ == "__main__":
  main()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM