1、文件操作方法
打开文件 open 函数
你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。读取文件 read()
read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
写入 write()方法
write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
write()方法不会在字符串的结尾添加换行符('\n'):
关闭 close()方法
File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。
当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。
# 打开文件
file = open("new_file.txt", 'r', encoding='utf-8')
# 读取数据
data = file.read()
print(data)
#关闭文件
file.close()
2、文件操作模式指南
模式 r r+ w w+ a a+ 读 + + + + 写 + + + + + 创建 + + + + 覆盖 + + 指针在开始 + + + + 指针在结尾 + +
模式 | 描述 |
t | 文本模式 (默认)。 |
x | 写模式,新建一个文件,如果该文件已存在则会报错。 |
b | 二进制模式。 |
+ | 打开一个文件进行更新(可读可写)。 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
3、文件写入
在 w 模式下,如果之前没有这个文件,将会创建新文件 写入中文需要指定编码格式为 utf-8, GBK TODO: 坑1:如果之前已经存在同名文件,使用 mode='w' 模式,会覆盖之前的文件内容。 mode = 'a', 追加模式 mode = 'x', 原创模式,独创模式 mode = 'b', 二进制模式, 't'文本
file = open('new_file.txt', mode='a', encoding='utf-8')
# 写入数据
file.write("英文太多,我记不住")
# 关闭文件
file.close()
f = open('new_file.txt','r',encoding='utf-8')
data = f.read()
print(data)
#打印结果:ICO小组正在探讨文件操作,请大家仔细听讲英文太多,我记不住
4、什么是模块?模块的作用?
模块:.py 文件就是模块。【实际上 .pyc .pyo pyd so dll, 】动态库 什么是包:包含了 __init__.py 的模块的文件夹(目录) 模块和包的作用:就是为了组织代码。
5、文件路径常用操作
# 第一种 import os.path # 第二种方式 from os import path # os.path 主要处理系统路径相关的操作。
# 第一种
import os.path
# 第二种方式
from os import path
# os.path 主要处理系统路径相关的操作。
# 获取文件的绝对路径
# 什么是绝对路径?? 从系统的盘符或者是系统根目录开始,
# 相对路径。 一个路径相对于另一个路径的说法。
# D: D:\班级管理
# 用得最多的是 os.path.abspath(__file__)
# 因为绝对路径不会变
print(os.path.abspath(__file__)) #demo_02_os, class12_路径处理类和对象\demo_02_os.py
# __file__
# __name__
print(__file__) # 文件路径(相对)
print(__name__) #模块名,没有路径
# 获取现在的文件绝对路径
file_path = os.path.abspath(__file__)
print("filepath", file_path)
# 获取上一级路径
dir_name = os.path.dirname(file_path)
# 路径拼接 文件 / 文件
# 所有获取到的路径,只是一个路径的表示,并不代表这个文件或者路径真的存在。
# 说白了:路径得到的是一个字符串。这个字符串是一个路径格式 `\` ,
txt_path = os.path.join(dir_name, 'demo.txt' )
with open(txt_path, 'w') as f:
f.write("new txt file")
# 获取当前工作目录
print(os.getcwd())
# 创建一个新的目录(文件夹)
if not os.path.exists("subdir"):
print(os.mkdir('subdir'))
# 判断一个路径存不存在
# print(os.path.exists("d:\olg"))
# 判断路径是否是一个文件
# 获取到的路径得到是一个字符串。
print(os.path.isfile(os.getcwd()))
print(os.path.isdir(os.getcwd()))
6、模块导入
模块.demo_01_什么是模块.visit('')
from 模块 import demo_01_什么是模块
demo_01_什么是模块.visit('')
demo_01_什么是模块.respose()
# from ++++ import ++++
from 模块.demo_01_什么是模块 import visit, respose
visit('')
# 导入所有的
from 模块.demo_01_什么是模块 import *
visit('')
respose()