六、文件操作_2.文件访问模式详解

文件访问模式详解

打开文件 open()
        参数1 文件路径
            路径 url :统一资源定位符
            相对路径:目标文件相对于当前文件所在的位置
                1. ./1.txt       ./ 当前目录中的 1.txt
                2. 1.txt         文件前没有任何表示时,默认为当前目录中的 1.txt
                3. ../a/1.txt    ../ 当前目录的上一级目录中的 a 文件下的 1.txt
            绝对路径:目标文件的完整位置
                windows:    c:/user/adddate/1.txt
                Linux:      /user/home/yc/1.txt

        参数2 访问模式
            基础模式:w r x a
                w 模式:write 写入模式
                    1.文件不存在则创建文件
                    2.文件存在则打开文件,并清空文件内容
                    3.文件打开后,指针在文件的最前面

                r 模式(默认模式):read 读取模式
                    1.文件不存在则引发异常
                    2.文件存在则打开文件
                    3.文件打开后,指针在文件的最前面

                x 模式:xor 异或模式
                    1.文件不存在则创建文件
                    2.文件存在则引发异常(防止覆盖)
                    3.文件打开后,指针在文件的最前面

                a 模式:append 追加模式
                    1.文件不存在则创建文件
                    2.文件存在则打开文件
                    3.文件打开后,指针在文件的最后面

            扩展模式
                b 模式:bytes 二进制
                + 模式:plus 增强模式(可读可写)

            文件打开模式的组合
                w,r,x,a
                wb,rb,xb,ab
                w+,r+,x+,a+
                wb+,rb+,xb+,ab+

        参数 encoding    可选参数,设置文件的字符集
            如果是二进制的文件,则不需要设置字符集
            encoding='utf-8'
w,r,x,a 模式访问文件
# 1.打开文件
# 以指定路径和模式,创建一个文件对象
fp = open('./1.txt','a',encoding='utf-8')

# 使用r模式打开不存在的文件则引发异常
# FileNotFoundError: [Errno 2] No such file or directory: './2.txt'

# 使用x模式打开已存在的文件则引发异常
# FileExistsError: [Errno 17] File exists: './1.txt'


# 2.读写文件
# 使用文件对象调用 write() 或 read()

# w
fp.write('w mode write test')

# r
res = fp.read()
print(res)

# x
fp.write('x mode write test')

# a
fp.write(' ____ a mode write test')


# 3.关闭文件
# 使用文件对象,调用 close() 关闭文件
fp.close()
扩展模式访问文件

任何一种扩展模式访问文件,都遵循基础访问模式的特点

w+, r+, a+ 的区别
# 创建test2
f = open('test2.txt','w',encoding='utf-8')
f.write('''abcde
fghij''')
f.close()

# w+
fp = open('test2.txt','w+')
fp.write('w+M')
res = fp.read()
print(res)
fp.close()
'''
1.清空test2
2.写入'w+M',指针在末尾
3.读取

w+M ←P
'''


# r+
fp = open('test2.txt','r+')
fp.write('r++MODE')
res = fp.read()
print(res)
fp.close()
'''
1.指针在开头
2.写入'r+MOME',指针在 E 后面
3.读取

r++MODE ←P fghij
'''

# a+
fp = open('test2.txt','a+')
fp.write('a+M')
res = fp.read()
print(res)
fp.close()
'''
1.指针在末尾
2.写入'a+M',指针在末尾
3.读取

abcde
fghija+M ←P
'''
上一篇:2


下一篇:融汇贯通系列之--栈(二)实战巩固