文件对象的方法
1、
open():创建一个file对象,默认是以只读模式打开
2、read(n): n表示从文件中读取的数据的长度,没有传n值就默认一次性读取全部内容
3、write():将指定内容写入文件
4、close():关闭文件
文件属性
name返回要打开的文件的文件名,可以包含文件的具体路径
mode返回文件的访问模式
closed检测文件是否关闭 关闭就是返回true
范例:
# 打开文件
f = open("./file/test.txt")
print(f.name) # 文件名
print(f.mode) # 打开方式
print(f.closed) # 文件是否关闭
# 关闭文件 close要和open函数成对出现
f.close()
print(f.closed) # 文件是否关闭
-----------------------------------------
./file/test.txt #带路径的文件名
r # 只读
False # 未关闭
True #已关闭
读写操作
read(n)读取文件
readline()一次读取一行内容
readlines()按照行的方式第一次性读取全部内容 返回一个列表
write()写入内容
test.txt:
zhangsan 18
lisi 16
wangwu 20
f = open("./file/test.txt")
print(f.read())
f.close()
------------------------
zhangsan 18
lisi 16
wangwu 20
=======================
print(f.read(5))
--------------
zhang
=======================
print(f.read(5))
print(f.readline())
--------------------------
zhang
san 18 # 可以看出来 读取是根据指针来的,前面读过了就不能再读取到了除非把指针前移
==============================
print(f.read(5))
print(f.readline())
print(f.readline())
--------------------------------
zhang
san 18
lisi 16
=========================
f = open("./file/test.txt")
print(f.readlines())
f.close()
-------------------------------
['zhangsan 18\n', 'lisi 16\n', 'wangwu 20']
按行循环读取
f = open("./file/test.txt")
while True:
text = f.readline()
if not text:
break
print(text)
f.close()
--------------------
zhangsan 18
lisi 16
wangwu 20
访问模式
| 模式 | 可做操作 | 若文件不存在 | 是否覆盖 |
|---|---|---|---|
| r | 只读 | 报错 | - |
| r+ | 可读可写 | 报错 | 是,从指针开始覆盖写入量的数据,不清空文件 |
| w | 只写 | 创建 | 是 |
| w+ | 可读可写 | 创建 | 是,打开文件的时候就清空文件了 |
| a | 只写 | 创建 | 否,追加写 |
| a+ | 可读可写 | 创建 | 否,追加写 |
f = open("./file/test.txt", 'w+') # 此时已清空文件
print(f.read())
f.write("hahh")
f.seek(0) # 让指针回到开头
print(f.read())
f.close()
-----------------------
# 第一次读取到的是清空的文件
hahh # 第二次读取到的是写入的文件
文件定位操作
tell()显示文件当前位置,即文件指针当前位置
seek(offset, whence)移动文件读取指针到指定位置
offset偏移量 表示要移动的字节数
whence起始位置,表示移动字节的参考位置,默认是0,0代表文件从开头作为参考位置,1代表当前位置作为参考位置 2代表将文件结尾作为参考位置
seek(0,0)会将文件指针移到开头
with open
作用:代码执行完,系统自动调用f.close(),可以省略文件关闭步骤
with open("./file/test.txt", 'w+') as f :
f.write("hhhhh")
print(f.closed)
print(f.closed)
--------------------------------
False
True
类似于java的写法,出了try代码块 流自动关闭
try (BufferedWriter f = new BufferedWriter(new FileWriter("./file/test.txt"))) {
f.write("hello");
} catch (IOException e) {
e.printStackTrace();
}
编码格式
with open("./file/test.txt", 'w+', encoding='utf-8') as f :
f.write("张三 18")
f.seek(0,0)
print(f.read())
-------------------------------------------
张三 18
OS模块 目录操作
import os
# 文件重命名
os.rename("./file/test.txt", './file/zhangSan.txt')
# 删除文件
os.remove('./file/zhangSan.txt')
# 创建文件夹
os.mkdir('wenjianjia')
# 删除文件夹
os.rmdir('wenjianjia')
# 获取当前目录
os.getcwd()
# 获取目录列表 默认是当前目录列表(当前层级全部的文件目录)
os.listdir()
# 获取上一级目录列表(上一级全部的文件夹目录)
os.listdir('../')