首页 > 编程语言 >python文件操作

python文件操作

时间:2022-10-09 19:35:10浏览次数:50  
标签:文件 encoding python utf8 -- 操作 txt open

python文件操作

文件的概念

文件就像是系统呈现在我们面前的能够使用硬盘的快捷方式,文件可以是文本文档、图片、程序等等。文件通常具有点+三个字母的文件扩展名,用于指示文件类型(例如,图片文件常常以JPEG格式保存并且文件扩展名为.jpg)

graph TD A(硬盘)-->B(双击文件打开) B-->|文件从硬盘加载到内存|C(内存)

双击打开文件操作

graph TD A(内存)-->B(ctrl+s) B-->|文件从内存刷入硬盘|C(硬盘)

ctrl+s保存文件操作

python中利用代码打开文件的方式

方法1:
f = open(文件路径,读写模式,encoding='utf8')
        f.close()
    在该方法中打开的文件需要输入代码才可以结束调用
方法2:
with open('a.txt', 'r', encoding='utf8') as f1:
        	with子代码块
    在第二中方法中,with子代码块执行完毕后会自动关闭打开的文件,不需要输入额外的代码
PS:在python中“\”与其他字母的联用会有特殊效果,如果在输入的文件路径中有这种情况出现,
就会导致文件路径混乱,为避免该情况,我们可以在文件路径前加字母'r'来区分
with open(r'a.txt', 'r', encoding='utf8') as f1:
        	with子代码块
with语法的使用可以一次打开多个文件,只需用逗号隔开即可:
	with open() as f1,open() as f2,open() as f3:
		子代码

python中文件读写模式

1.“r” 只读模式(只读取不写入)

with open(r'a.txt', 'r', encoding='utf8') as f:
        print(f.read())
*如果文件路径不正确或不存在的话会直接报错
*如果文件路径正确,则直接读取该文件

2.“w” 只写模式(只写入不展示过程)

with open(r'b.txt', 'w', encoding='utf8') as f:
    pass
*如果文件路径不存在,会直接创建新文件
*如果文件路径存在,则会抹除文件中原有的数据,重新写入
*"pass"关键字只负责补全代码语法结构,不执行任何操作

3.“a” 只追加模式(之在文件末尾写入数据)

with open(r'a.txt', 'a', encoding='utf8') as f:
        f.write(数据值)
*只追加模式下,如果文件路径存在,则只会在文件末尾追加写入数据
*如果文件路径不存在的话,会直接创建一个新文件

python中的文件操作模式

1."t" 文本模式

*文本模式是python的默认操作模式,在以上三种读写模式中,完全的拼写应该是"rt","wt","at",但是在实际运用过程中我们可以省略"t"
*文本模式下只能操作文本文件
*文本模式下的读写都是以字符为单位的
*在使用文本模式时,需要encoding参数指定编码方式,如果为添加encoding参数,则以计算机默认的编码进行操作

2."b" 二进制模式(bytes模式)

*二进制模式不是python的默认操作方式,需要在读写模式的字母后添加“b”来指定(rb,wb,ab)
*可以操作任意类型的数据,将数据处理为二进制进行操作
*二进制模式下的读写都是以bytes(字节)为单位的
*不需要encoding参数指定编码,其本身采用二进制编码

文件诸多操作方法

graph LR A(文件操作方法)-->B(read相关) B-->1(read方法) B-->2(readline方法) B-->3(readlines方法) B-->4(readable方法) B-->5(for循环与read方法联用) A-->C(write相关) C-->a(write方法) C-->b(writeable方法) C-->c(writelines方法) A-->D(flush方法)
  • read相关
  1. read方法:
with open(r'a.txt', 'r', encoding='utf8') as f:
    f.read()
*read方法会一次性读取文件所有内容,读取结束后光标停在文件末尾
*当文件内容过多时一次性读取会造成内存溢出
*read后面的括号中可以填写数字,代表读取字符的个数
  1. readline方法
with open(r'a.txt', 'r', encoding='utf8') as f:
    f.readline()
*readline方法一次只读取一行内容
  1. readlines方法
with open(r'a.txt', 'r', encoding='utf8') as f:
    f.readlines()
*readlines方法会读取文件中所有数据,并按照分行将其组织成列表
  1. readable方法
with open(r'a.txt', 'r', encoding='utf8') as f:
    f.readable()
*readable用来判断文件是否处于可读取状态
  1. for循环与read方法联用
with open(r'a.txt', 'r', encoding='utf8') as f:
    for line in f:
    	print(line)
*for循环的使用也可以实现一行一行的读取文件内容

  • write相关
  1. write方法
with open(r'a.txt', 'w', encoding='utf8') as f:
    f.write()
*write方法后的括号内可以跟随需要写入的数据
  1. writeable方法
with open(r'a.txt', 'w', encoding='utf8') as f:
    f.writeable()
*writeable方法用来判断文件是否是可写入文件
  1. writelines方法
with open(r'a.txt', 'w', encoding='utf8') as f:
    f.writelines([1,2,3,4,5])
*writelines方法会接受一个列表,然后将列表中的数据值写入文件

  • flush方法
with open(r'a.txt', 'w', encoding='utf8') as f:
    f.flush()
*flush方法的作用是将内存中的文件立刻存储到硬盘,与ctrl+s的作用相同

文件内光标的移动

  1. seek方法
with open(r'a.txt', 'rb') as f:
    print(f.read())
    f.seek(0,0)
语法构成:seek(偏移量,模式)
偏移量表示光标移动的字节数
模式分为三种:“0”,“1”,“2”
0:光标基于文件开头位置移动,在文本模式以及二进制模式都可以使用
1:光标基于光标当前所在位置移动,只可以在二进制模式下使用
2:光标基于文件末尾位置移动,只可以在二进制模式下使用
  1. tell方法
with open(r'a.txt', 'rb') as f:
    print(f.read())
    f.tell()
tell方法的作用是指出光标距离返回文件开头位置已经移动了多少距离

文件内光标移动案例(了解)

import time

with open(r'a.txt', 'rb') as f:
    f.seek(0, 2)  # 光标处于文件末尾
    while True:
        line = f.readline()  # 读取每一行数据,但是由于光标在文件末尾,所以无法读取
        if len(line) == 0:  # 无法读取的情况下值为0
            # 没有内容
            time.sleep(0.5)  # 每间隔0.5秒进行一次读取
        else:
            print(line.decode('utf8'), end='')  # 当文件内容改变后,输出读取到的新增数据

计算机修改数据的原理

计算机储存数据的方式类似于刻字,用磁头将数据刻写在磁盘上,而当我们需要修改数据内容时,并不能在硬盘已经刻写好的数据中间部分添加或者删除,计算机只能将原有的数据抹除,然后重新刻写

而在计算机中,我们所进行的删除操作,只是将数据的状态进行改变,计算机会将硬盘中我们所删除的数据打上空白标记,将原来这些数据占用的数据存储单元解放出来,“空白”的意思就是可用,新存进硬盘里的数据会直接写在这个位置,把这个文件的数据覆盖掉,也就是自始至终这个文件都没有消失,只是被当成了空白的空间,这就像是一幅画,画家觉得没有画好,他不会直接丢掉这张纸,而是等到下次画新画的时候,把旧画当成一张白纸,在上面画新的内容。

文件内容修改(了解)

修改文件内容的方式1:覆盖写
with open(r'a.txt', 'r', encoding='utf8') as f:
    data = f.read()  # 用变量名绑定读取到的数据
with open(r'a.txt', 'w', encoding='utf8') as f1:
    f1.write(data.replace('jason', 'tony'))  # 写入新的数据替换原有的数据

修改文件内容的方式2:换地方写
'''先在另外一个地方写入内容 然后将源文件删除 将新文件命名成源文件'''
import os

with open('a.txt', 'r', encoding='utf8') as read_f, 
        open('.a.txt.swap', 'w', encoding='utf-8') as write_f:
    for line in read_f:
        write_f.write(line.replace('tony', 'kevinSB'))


os.remove('a.txt')  # 删除a.txt
os.rename('.a.txt.swap', 'a.txt')  # 重命名文件

标签:文件,encoding,python,utf8,--,操作,txt,open
From: https://www.cnblogs.com/lf17603472426/p/16773358.html

相关文章

  • 文件操作
    文件操作1.文件的概念 就是操作系统暴入给用户操作硬盘的快捷方式比如双击一个文件就是冲硬盘将数据加载到内存ctrl+s保存文件就是将内存的数据刷到硬盘保存......
  • gorm中的关联操作详解
    一对一belongto属于:可以理解为舔狗认为自己属于女神,而女神都不知道舔狗的存在typeGirlstruct{ Idint Namestring } typeDogstruct{ Idint Na......
  • Python学习路程——Day09
    Python学习路程——Day09文件操作1、文件的概念''' 操作系统为了使用户更好的使用计算机,而创建的一个快捷方式。 双击一个文件,相当于把硬盘的数据资源加载到内存中。......
  • 文件的修改与函数
    文件的修改计算机硬盘修改数据的原理硬盘有两个形态占有态和自由态我们在删除数据的时候,就是将原来的位置标记为自由态,在下载新数据落到这个自由态原本的标记位置就会......
  • python基础之文件处理
    python基础之文件处理目录一、什么是文件1.什么是文件、为什么要用文件二、文件操作的流程1.文件操作的流程2.资源回收与with方法三、文件的操作模式1.文件的读写模式2.......
  • python中文件操作相关基础知识
    python中文件操作相关基础知识文件的概念1,文件的概念?文件就是操作系统暴露给用户操作硬盘的快捷方式,当我们双击一个文件进行打开时,其实就是把硬盘中的数据加载......
  • 文件处理
    目录一.文件操作1.文件的概念2.代码打开文件的两种方式二.文件读写模式1.'r' 只读模式:只能读不能写2.'w' 只写模式:只能写不能看3.'a' 只追加模式:文件末尾添加......
  • python文件操作
    今日内容概要文件操作利用python代码的编写来读写文件1.文件的概念2.文件的操作方式3.文件读写模式4.文件操作模式5.文件诸多方法6.文件内容修改7.文件光标移......
  • python调用c++的方法,加速运算
    cpp源代码#include"iostream"usingnamespacestd;classCalc{public:intadd(inta,intb);};intCalc::add(inta,intb){cout<<"收到参数为a,b:"<<a<......
  • python函数
    今日内容概要文件内光标的移动实战演习计算机硬盘存取数据的原理文件内容修改函数简介函数的语法结构函数的定义与调用今日内容详细文件内光标移动案列(了解......