Python创建文件并对文件进行追加或重写

  • 前言
  • 一、常用的文件操作形式及函数
  • 二、Python追加或重写文件
  • 三、Python先读取文件再进行追加或重写
  • 四、参考链接

前言

  博主在做深度学习,尤其是计算机视觉方向,常常需要对网络训练过程中的各种输出,比如logits,预测标签的情况进行保存及观察,因此撰写了本博文。大家可以根据自己的需求对下述代码稍作改动,并嵌入到你的代码中,进行各种中间结果及输出结果的保存,从而更直观地观察实验过程中出现的各种问题。注:本博文会不断完善,欢迎大家点赞,收藏,便于下次更快地找到。

一、常用的文件操作形式及函数

  常用的文件操作如下,一般搭配open函数使用,具体使用方式可以参考博文的第三、四部分。

Python csv 写入 追加写入 python追加写入文件_Python

  常用的文件操作函数如下:

Python csv 写入 追加写入 python追加写入文件_文件操作_02

二、Python追加或重写文件

  下述代码展示了使用Python打开指定路径下的文件,并进行追加写入的过程。如果该文件不存在,则首先创建新文件,然后再进行追加写入操作。其中,核心语句为 with open(path,‘a’) as f:

  如果是重写的话,则加上 f.truncate(0) 即可。

path = r'D:\yandandan2021\code\grade.txt' 

# a表示打开一个文件用于追加。
# 如果该文件已存在,文件指针将会放在文件的结尾,即新的内容将会被写入到已有内容之后。
# 如果该文件不存在,创建新文件进行写入。
with open(path,'a') as f:

    # truncate()方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 
    # 如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。
    # truncate(0)表示清除文件中的所有内容。
    f.truncate(0)
    
    f.write('before1:' + str(90) + '\n')
    f.write('before2:' + str(80) + '\n')
    f.write('before3:' + str(95) + '\n')
    f.close()

三、Python先读取文件再进行追加或重写

  下述代码展示了首先对指定路径下的文件进行逐行读取,然后清除原文件中的所有内容,并进行重写的操作。如果不想清除原文件进行重写,而是单纯地读取并追加,那么不加f.truncate(0)即可

path = r'D:\yandandan2021\code\grade.txt' 

# a+表示打开一个文件用于读写。
# 如果该文件已存在,文件指针将会放在文件的结尾,文件打开时会是追加模式。
# 如果该文件不存在,创建新文件用于读写。
with open(path,'a+') as f:

    # 重新设置文件读取指针到开头
    f.seek(0, 0)
    for line in f.readlines():
        print(line.rstrip()) # rstrip默认消除字符串末尾的空格和换行符

    # truncate()方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 
    # 如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。
    # truncate(0)表示清除文件中的所有内容。
    f.truncate(0)

    f.write('after1:' + str(90) + '\n')
    f.write('after2:' + str(80) + '\n')
    f.write('after3:' + str(95) + '\n')
    f.close()

四、参考链接

1.Python对于文件的各种操作方法可参考:https://www.runoob.com/python/file-methods.html

Python csv 写入 追加写入 python追加写入文件_Python csv 写入 追加写入_03

2.Python对于字符串的各种操作方法可参考:https://www.runoob.com/python/python-strings.html

Python csv 写入 追加写入 python追加写入文件_Python_04

不过,话说回来,虽然官网写的十分详细,但我们常用的也不多。本博文所涵盖的知识,对于多数同学来说,还是足够的。最后,如果你在实验的过程中,有任何问题,欢迎在评论区留言,便于大家一起帮你解决!