python基础--文件

四种基本操作

开关读写

打开

f = open(‘文件路径’,’打开模式’,encoding=’编码’)

打开模式

模式 描述
r 只读模式打开,指针放在文件开头,文件不存在抛出异常,这是默认模式
w 只写模式,文件不存在就创建,文件存在就覆盖
a 追加模式,如果文件存在,文件指针将会放在文件结尾。文件不存在创建新文件进行写入。
rb 二进制只读方式打开,指针在文件头
wb 二进制只写模式打开,有新建和覆盖行为
ab 二进制追加
r+ 读写模式,指针在文件开头,必须文件存在
w+ 读写模式,有覆盖和新建行为
a+ 读写模式追加
rb+ 二进制格式打开读写,文件指针将会放在文件开头
wb+ 二进制读写,有覆盖新建
ab+ 二进制追加,有追加和新建行为

文件路径

  • 相对路径
    从当前所在路径出发
  • 绝对路径
    从盘符或根目录出发

关闭

f.close() :关闭文件

f.closed :可以验证文件是否关闭

读取

f.read([size])

该方法读取若干数量的数据并以字符串形式返回其内容,size是可选的数值,指定字符串长度。
如果没有指定或者指定为负数,就会服务并返回整个文件,当文件大小为当前机器内存两倍时,就会产生错误。反之,会尽可能按比较大的size读取和返回数据。

如果到了文件末尾,f.read()会返回一个空字符串
* 默认不传size的时候,会全部读取

readlines()

按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素(元素中包括\n换行符),

注意:读完返回空列表[]

readline()

一次读取一行,内容中包含\n换行符

注意:读完返回空字符串

注意

在文本模式下,读取时默认会将平台有关的行结束符(Unix上是\n,Windows上是\r\n,mac上是\r)装换为\n。在文本模式下写入时,默认会将出现的\n转换成平台有关的行结束符。这种暗地里的修改对ASCLL文本文件没有问题。但会损坏JPEG或EXE这样的二进制文件中的数据。使用二进制模式读取此类文件时要特别小心。

写入

f.write()

文件文件夹操作

os模块

文件重命名

import os 
os.rename(源文件名,新文件名)

删除文件

import os 
os.remove(待删除的文件)

创建文件夹

import os 
os.mkdir(文件夹名)

获取当前目录

import os 
os.getcwd()

改变默认目录

import os 
os.chdir(要改变到的路径)

获取目录列表

import os 
os.listdir(需获取列表的目录)

删除文件夹

import os 
os.rmdir(需删除的文件名)

序列化

将python数据结构转换成字符串格式

JSON模块

  • json.dumps(基本对象):将基本对象序列化返回
  • json.dump(基本对象,f):f是写打开模式,直接序列化写入文件
  • json.load(基本对象,f):f是读打开模式,序列化写入文件

pickle模块

反序列化

从字符串表示形式构建成结构形数据

操作注意点

指针

计量了自文件开头到指针处的偏移量

tell()

返回文件对象现在的指针位置

f.seek(offset,from_what)

指针从指定的引用位置移动offset比特,引用位置由from_what参数指定

  • from_what的值
    • 0:自文件起始开始,默认值
    • 1:自当前文件指针位置开始
    • 2:自文件末尾开始

注意:

在文本文件中(没有以b模式打开),只允许从文件头开始寻址(有个例外:seek(0,2)寻址文件末尾)
而且合法的偏移量只能是f,tell()返回的值或者是0,其他任何偏移值都会产生未定义的行为

关键字with处理文件

其实是try…finally的简写方式

格式

with open('XXX','r') as f:
    read_data = f.read()

# 验证
f.closed   # 返回True

猜你喜欢

转载自blog.csdn.net/lb786984530/article/details/79895085