No.1 文件的概念文件的概念和作用

计算机中的文件,就是存储在某种长期储存设备上的一段数据流

计算机中的文件,可以在需要的时候使用

文件的存储方式

文本文件

可以使用文本编辑器查看

本质上还是二进制文件

二进制文件

保留的内容不能直接查看,而是提供给其他软件查看

图片、音频、视频等都是二进制文件

No.2 文件的基本操作操作文件的基本套路

打开文件

读写文件

关闭文件

操作文件的函数函数说明fp.read([size])size为读取的长度,以byte为单位fp.readline([size])读一行,如果定义了size,有可能返回的只是一行的一部分fp.readlines([size])把文件每一行作为一个list的一个成员,并返回这个listfp.write(str)把str写到文件中,write()并不会在str后加上一个换行符p.writelines(seq)把seq的内容全部写到文件中(多行一次性写入)fp.close()关闭文件fp.flush()把缓冲区的内容写入硬盘fp.fileno()返回一个长整型的文件标签fp.tell()返回文件操作标记的当前位置,以文件的开头为原点fp.next()返回下一行,并将文件操作标记位移到下一行fp.seek(offset[,whence])将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数, whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算read方法——读取文件

f = open('manage.py','r',encoding='utf-8')print(f.tell())text = f.read()print(text)f.close()

文件指针表示从哪个位置开始读取数据

第一次打开文件时,指针指向文件的开始位置

当执行了read方法后,指针指向文件的末尾,再次调用不会读取到任何内容

打开文件的方式模式说明r以只读方式打开文件,文件的指针将会放在文件的开头,这是默认模式,如果文件不存在,抛出异常w以只写方式打开文件,如果文件存在会被覆盖,如果文件不存在,创建新文件a以追加方式打开文件,如果该文件已存在,文件指针将会放在文件的结尾,如果文件不存在,创建新文件进行写入r+以读写方式打开文件,文件的指针将会放在文件的开头,如果文件不存在,抛出异常w+以读写方式打开文件,如果文件存在会被覆盖,如果文件不存在,创建新文件a+以读写方式打开文件,如果该文件已存在,文件指针将会放在文件的结尾,如果文件不存在,创建新文件进行写入逐行读取

read方法默认会把文件的所有内容一次性读入到内存中

如果文件过大,对内存的占用非常恐怖

readline方法可以一次读取一行内容

方法执行后,会把文件的指针指向下一行

复制文件

小文件复制

打开一个文件,读取全部内存,并写入到另一个文件中

# 1. 打开文件file_read = open("README")file_write = open("README.bak", "w")# 2. 读取并写入文件text = file_read.read()file_write.write(text)# 3. 关闭文件file_read.close()file_write.close()

大文件复制

# 1. 打开文件file_read = open("README")file_write = open("README.bak", "w")# 2. 读取并写入文件while True: # 每次读取一行 text = file_read.readline() # 判断是否读取到内容 if not text: break file_write.write(text)# 3. 关闭文件file_read.close()file_write.close()No.3 文件/目录的常用管理操作

在终端/资源管理器、 中可以执行常规的文件/目录管理操作 ,如果希望通过代码来实现,需要导入os模块

文件操作方法说明示例rrename重命名文件os.rename(文件名)remove删除文件os.remove(文件名)目录操作方法说明示例listdir目录列表os.listdir(目录名)mkdir创建目录os.mkdir(目录名)rmdir删除目录os.rmdir(目录名)getcwd获取当前目录os.getcwd()chdir修改工作目录os.chdir(目标目录)path.isdir判断是否是文件os.path.isdir(文件路径)No.4 文本文件的编码转换

No.5 with上下文管理

with open("demo","r",encoding="utf-8") as f: #自动关闭并释放文件资源 for line in f: print(line)with open("demo","r",encoding="utf-8") as f,\ open("demo.bak","w",encoding="utf-8") as f2: for line in f: print(line) f2.write(line)