目录
- 一、什么是文件
- 二、文件的打开与关闭
- 2.1、文件打开
- 2.1.1、方式一:open(name, mode)
- 2.1.2、方式二:with open(name, mode) as file:
- 2.2、文件关闭
- 三、文件的读写
- 3.1、文件的读取
- 3.2、文件的写入
- 3.3、读取与写入位置问题
- 四、文件文件夹的相关操作(os模块)
- 4.1、文件相关操作(rename、remove)
- 4.2、文件夹相关操作(mkdir、getcwd、chdir、listdir、rmdir)
一、什么是文件
文件:python中文件是对象。
Linux文件:一切设备都可以看成是文件。
文件属性:读、写、执行权限
文件的作用:把一些数据以文件的形式存储起来,文件由文件系统进行管理,当程序下一次执行的时候,通过文件系统快速找到对应的文件,从而找到对应的数据,省时省力。
二、文件的打开与关闭
2.1、文件打开
2.1.1、方式一:open(name, mode)
文件打开方法:
open(name,mode)
name:待打开的文件名
mode:打开的方式
说明:open函数有多个参数,大部分均有默认值,只有name没有默认值。
模式:
mode | 说明 | 注意 |
‘r’ | 只读方式打开 | 文件必须存在,如果不存在直接报错 |
‘w’ | 只写方式打开 | 文件不存在,创建文件;文件存在则清空文件内容 |
‘a’ | 追加方式打开 | 文件不存在创建文件,打开的权限为只读 |
‘r+’/‘w+’ | 只读方式打开 | |
‘a+’ | 追加和读写方式打开 |
’rb’, ‘wb’, ‘ab’, ‘rb’, ‘wb+’, ‘ab+’: 二进制方式打开
示例:
file = open("test.txt", "w")
2.1.2、方式二:with open(name, mode) as file:
示例:
with open("test.txt", "w") as f:
f.read()
with open 和 open 的区别: with打开时候不用关闭文件的,系统会自动关闭,open打开后需要手动关闭。
2.2、文件关闭
示例:
file = open("test.txt", "w")
file.close() # 关闭文件
文件关闭的原因:
- 将写缓存同步到磁盘 ;
- Linux 系统中每一个进程打开文件的个数是有限的,如果打开文件数到了系统限制, 则会打开失败。
三、文件的读写
3.1、文件的读取
查看变量所属的类以及类中函数的说明:
file = open("test.txt", "r")
print(type(file)) # 查看变量所属的类
help(file.read) # 类中函数的说明
file.close()
read(size)
作用:读取文件(读取size个字节,默认读取全部)
示例:
file = open("test.txt", "r") # 打开文件
contend = file.read(10) # 读取10个字节
print(contend)
print("-"*30)
result = file.read() # 读取全部
print(result)
file.close() # 关闭文件
readlines(size)
作用:读取文件返回每一行所组成的列表(读取size行,,默认读取全部)
示例:
file = open("test.txt", "r")
contend = file.readlines()
print(contend)
print("-"*30)
for i in contend: # 遍历列表
print(i)
file.close()
readline()
作用:读取一行
示例:
file = open("test.txt", "r")
contend = file.readline() # 读取第一行
print(contend)
ret = file.readline() # 读取第二行
print(ret)
file.close()
3.2、文件的写入
write(str)
作用:将字符串写入文件
示例:
file = open("test.txt", "w")
file.write("hi")
file.close()
writelines(seq)
作用:写多行到文件中
示例:
file = open("test.txt", "w")
seq = ["hello\n", "world\n"]
file.writelines(seq)
file.close()
3.3、读取与写入位置问题
demo.txt文件内容:
hello world
file = open("demo.txt", "a")
contend = file.read(2)
print(contend)
file.close()
先思考一下:以追加的模式打开,运行结果却没打印出"he"两个字符,而是空白?
因为以追加的模式打开,文件位置指针指向的文件的末尾,所以打印出来的是空白。
- r、w、r+、w+:刚开始打开文件时,文件位置指针指向文件开头位置。随着读写操作依次后移。
- a、a+:刚开始打开文件时,文件位置指针指向文件末尾位置。随着读写操作依次后移。
注意:r+、w+:刚开始打开文件时,文件位置指针指向文件开头位置,先进行读操作,然后执行写操作,发现这时写的位置并不是读操作之后的文件位置,而是直接在文件末尾进行写入。
示例:
file = open("demo.txt", "r+")
contend = file.read(2) # 文件开头位置
print(contend)
print("-"*30)
file.write("hi") # 文件末尾位置
contend = file.read(2) # 文件末尾位置,这解释为什么打印出来的是空白
print(contend)
print("-"*30)
file.close()
"""
运行结果为:
he
------------------------------
------------------------------
"""
python文件写入的工作原理:
python写入磁盘的时机:
- 主动调用 close 方法,写缓存同步到磁盘
- 写入数据量大于或等于写缓存,写缓存同步到磁盘
四、文件文件夹的相关操作(os模块)
python对文件操作过程分析:
4.1、文件相关操作(rename、remove)
OS模块
文件重命名:os.rename(需要修改的文件名,新的文件名)
示例:
import os
os.rename("test.txt", "test1.txt")
OS模块
文件删除操作:os.remove(待删除的文件名)
示例:
import os
os.remove("123.txt")
4.2、文件夹相关操作(mkdir、getcwd、chdir、listdir、rmdir)
OS模块
创建文件夹:os.mkdir(文件夹名)
示例:
import os
os.mkdir("dir")
OS模块
获取当前目录:os.getcwd()
示例:
import os
os.getcwd()
"""
运行结果为:
C:\Users\npc\Desktop\
"""
OS模块
改变默认目录(change directory):os.chdir(路径)
说明:在windows环境下,路径是C:\Users\npc\Desktop\这样的右斜线,在修改默认路径时,需要指定为左斜线,比如D:/tmp
示例:
import os
cdpath = "C:/Users/npc/Desktop"
os.chdir(cdpath)
file = open("11", "w")
file.close()
OS模块
获取目录列表:os.listdir(路径)
说明:输出为列表的形式
说明:类似于Linux中的ls命令
示例:
import os
list = os.listdir("./")
print(list)
OS模块
获取目录列表:os.rmdir(待删除的文件夹名)
说明:类似于Linux中的rmdir命令
示例:
import os
os.rmdir("test")