python学习笔记:文件打开、关闭、读写、文件文件夹的相关操作

一、什么是文件

文件: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对文件操作过程分析:
在这里插入图片描述

在这里插入图片描述
图片转载博客:linux文件管理(inode、文件描述符表、文件表)

深入理解系统调用过程:Linux系统调用过程分析

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")

猜你喜欢

转载自blog.csdn.net/weixin_42258222/article/details/106414817