1、操作文件的函数/方法
- 在
Python
中要操作文件需要记住 1 个函数和 3 个方法
open
函数负责打开文件,并且返回文件对象read
/write
/close
三个方法都需要通过 文件对象 来调用
read 方法 —— 读取文件
open
函数的第一个参数是要打开的文件名(文件名区分大小写)- 如果文件 存在,返回 文件操作对象
- 如果文件 不存在,会 抛出异常
read
方法可以一次性 读入 并 返回 文件的 所有内容close
方法负责 关闭文件- 如果 忘记关闭文件,会造成系统资源消耗,而且会影响到后续对文件的访问
- 注意:
read
方法执行后,会把 文件指针 移动到 文件的末尾
# 1. 打开 - 文件名需要注意大小写 file = open("README") # 2. 读取 text = file.read() print(text) # 3. 关闭 file.close()
提示
- 在开发中,通常会先编写 打开 和 关闭 的代码,再编写中间针对文件的 读/写 操作!
文件指针(知道)
- 文件指针 标记 从哪个位置开始读取数据
- 第一次打开 文件时,通常 文件指针会指向文件的开始位置
- 当执行了
read
方法后,文件指针 会移动到 读取内容的末尾- 默认情况下会移动到 文件末尾
思考
- 如果执行了一次
read
方法,读取了所有内容,那么再次调用read
方法,还能够获得到内容吗?
答案
- 不能
- 第一次读取之后,文件指针移动到了文件末尾,再次调用不会读取到任何的内容
打开文件的方式
open
函数默认以 只读方式 打开文件,并且返回文件对象
语法如下:
f = open("文件名", "访问方式")
提示
- 频繁的移动文件指针,会影响文件的读写效率,开发中更多的时候会以 只读、只写 的方式来操作文件
写入文件示例
# 打开文件 f = open("README", "w") f.write("hello python! ") f.write("今天天气真好") # 关闭文件 f.close()
按行读取文件内容
read
方法默认会把文件的 所有内容 一次性读取到内存- 如果文件太大,对内存的占用会非常严重
readline
方法
readline
方法可以一次读取一行内容- 方法执行后,会把 文件指针 移动到下一行,准备再次读取
读取大文件的正确姿势
# 打开文件 file = open("README") while True: # 读取一行内容 text = file.readline() # 判断是否读到内容 if not text: break # 每读取一行的末尾已经有了一个 ` ` print(text, end="") # 关闭文件 file.close()
fr=a.read() #一次读取文件内所有行内容 fr1=b.readline() #每次读取文件一行,知道全部读完 fr2=c.readlines() #读取文件内全部内容
2、文件/目录的常用管理操作
os.path.join()
输入:字符串
返回:该系统上的正确的文件路径格式
import os >>>os.path.join('usr','bin','spam') 'usr\bin\spam'
文件夹路径操作
os.getcwd() :获取当前工作目录
os.chdir(path) :改变当前工作目录
.:当前目录 ..:当前目录的父目录
os.makedirs(path):创建新文件夹
os.path.abspath(path):将返回参数的绝对路径的字符串。
os.path.isabs(path):如果参数是一个绝对路径,就返回 True,如果参数是
一个相对路径,就返回 False。
os.path.relpath(path, start):将返回从 start 路径到 path 的相对路径的字符串。
如果没有提供 start,就使用当前工作目录作为开始路径
查看文件大小和文件夹内容
os.path.getsize(path):将返回 path 参数中文件的字节数。
os.listdir(path)将返回文件名字符串的列表
检查路径有效性
如果 path 参数所指的文件或文件夹存在, 调用 os.path.exists(path)将返回 True否则返回 False。
如果 path 参数存在,并且是一个文件,调用 os.path.isfile(path)将返回 True否则返回 False。
如果 path 参数存在,并且是一个文件夹, 调用 os.path.isdir(path)将返回 True否则返回 False。
请注意, write()方法不会像 print()函数那样,在字符串的末尾自动添加换行字符。必须自己添加该字符。