优秀的编程知识分享平台

网站首页 > 技术文章 正文

文件基础操作

nanyue 2024-11-22 18:34:39 技术文章 2 ℃

一、读取 : rb(纯二进制读) , rt(后面跟着类型,直接读)

files = open('0.txt',mode='rt',encoding='utf-8')
data= files.read()
print(data)
files.close()

注意:

(1)打开文件的路径,绝对路径,相对路径

(2)mode的类型,r 表示读的操作

(3)encodeing : 表示读取数据的编码格式

(4)read : 文件对象的读取文件数据的函数

(5)如果不用上下文with的话,注意要把文件close

(6)open函数如果打开的文件没有会自动创建,有的话就打开有的,但是注意路径的格式别错误!

在打开一个文件的的时候,最好判断下文件是否存在,如何判断呢,代码如下:

import os
os.path.exists('路径') 如果存在则返回True ,反之False

在window系统中写绝对路径容易出问题,比如一个文件的绝对路径: c:\new\info.txt , 那么这么写就会报错,因为\ 后面跟着是n ,他俩组合成换行符(也可能跟着其他的),要想解决这类情况,如下:

c:\\new\\info.txt 加\\ 俩个斜杠

r'c:\new\info.txt ' 加r

二、写入 : wb(纯二进制写入) ,wt(后面跟着类型,直接写)

注意:写入文件的数据类型必须是字节类型哦,也就是unicode二进制数据类型!!!!

files = open('0.txt',mode='wb')
files.write("草拟吗".encode('utf-8'))
files.close()

因为“草拟吗”是字符串类型,所以就要将其转化为uft8编码格式下的二进制字节类型,才可以保存到文件中哦!

其实不用每次保存的数据都要进行编码转化,可以直接在open函数中配置,代码如下:

file_object = open("0.txt", mode="wt", encoding="utf-8")
file_object.write("草拟吗")

三、小案例

flag = True
file_object = open("0.txt", mode="wt", encoding="utf-8")
while flag:
    name = input("请输入名字:")
    password = input("请输入密码:")
    data = "{} --- {}\n".format(name, password)
    file_object.write(data)
    flagInfo = input("您还需继续写吗,写输入1,不写输入0:")
    if flagInfo == "0":
        flag = False
        file_object.close()

注意:如果从网上或接口获取的数据要注意类型,可能会需要数据编码的转化或直接存入文件中如果是二进制的字节类型数据!



四、打开模式

  • 只读:r rt rb ---- 文件存在读,文件不存在报错 ; 默认进入光标在前面
  • 只写:w wt wb ---- 文件存在,清空文件内容在写 。 文件不存在,创建一个新文件再写 ; 不管咋写光标默认都在前面
  • 只写:x xt xb ---- 文件存在报错,文件不存在创建一个新文件再写
  • 只写:a at ab ---- 存在尾部追加,不存在创建新的文件在写; 默认打开文件后光标在内容最后面

五、比较特殊的



(1)r+ rb+ rt+ : 读完的时候,光标就自动到最后了,如果这个时候添加内容的话,内容就在最后了



(2)w+ wb+ wt+ :



(3)a+ ab+ at+ :



六、常见功能








如果上面的r+ 换成a+,那么光标永远都会移动到内容的最后,和seek设置的光标位置无关!

光标位置如果设置移动的数量错了,会出现乱码的情况哦,因为如果说一个文件里面有汉字,是utf-8的编码格式下,那么光标移动2个的话,在写入其他数据就会出现乱码,因为在utf8编码格式下汉字是3个字节



注意:图片和视频的保存,查看就是rb 或wb 二进制,不需要设定编码格式!!!!

最近发表
标签列表