Python学习之路_day_06(文件处理)

'''
1 什么是文件
    文件是操作系统为用户/应用程序提供的一种操作硬盘的抽象单位
2 为何要用文件
    用户/应用程序对文件的读写操作会由操作系统转换成具体的硬盘操作
    所以用户/应用程序可以通过简单的读写文件来间接地控制复杂的硬盘的存取操作
    实现将内存中的数据永久保存到硬盘中
    user=input('>>>>: ') #user="egon"
3 如何用文件
    文件操作的基本步骤:
        f=open(...) #打开文件,拿到一个文件对象f,f就相当于一个遥控器,可以向操作系统发送指令
        f.read() # 读写文件,向操作系统发送读写文件指令
        f.close() # 关闭文件,回收操作系统的资源
    上下文管理:
        with open(...) as f:
            pass
'''

open(r'D:SH_fullstack_s3day07a.txt')
f=open(r'a.txt',encoding='utf-8') #向操作系统发送请求,要求操作系统打开文件

print(f) # f的值是一个文件对象
print(f.read())

f.close() # 向操作系统发送请求,要求操作系统关闭打开的文件
print(f)
f.read()

强调:一定要在程序结束前关闭打开的文件

上下文管理with
with open(r'a.txt',encoding='utf-8') as f,
        open('b.txt',encoding='utf-8') as f1:
    print(f.read())
    print(f1.read())

'''
一 文件的打开模式
    r: 只读模式L(默认的)
    w: 只写模式
    a: 只追加写模式

二 控制读写文件单位的方式(必须与rwa连用)
    t : 文本模式(默认的),一定要指定encoding参数
        优点: 操作系统会将硬盘中二进制数字解码成unicode然后返回
        强调:只针对文本文件有效

    b: 二进制模式,一定不能指定encoding参数
        优点:

'''

with open('a.txt',mode='rt',encoding='utf-8') as f:
    data=f.read()
    print(data,type(data))

with open('1.png',mode='rt',encoding='utf-8') as f:
    data=f.read()

with open('1.png',mode='rb',) as f:
    data=f.read()
    print(data,type(data))

with open('a.txt',mode='rb',) as f:
    data=f.read()
    # print(data,type(data))
    print(data.decode('utf-8'))

with open('a.txt',mode='rt',encoding='utf-8') as f:
    data=f.read()
    print(data)

三 r: 只读模式L(默认的)
1 当文件不存时,会报错
2 当文件存在时,文件指针指向文件的开头

with open('a.txt',mode='rt',encoding='utf-8') as f:
    res1=f.read()
    print('111===>',res1)
    res2=f.read()
    print('222===>',res2)

    print(f.read())
    print(f.readable())
    print(f.writable())
    print(f.readline())
    print(f.readline())

    for line in f:
        print(line)

    l=[]
    for line in f:
        l.append(line)
    print(l)
    print(f.readlines())

四 w: 只写模式
1 当文件不存时,新建一个空文档
2 当文件存在时,清空文件内容,文件指针跑到文件的开头
with open('c.txt',mode='wt',encoding='utf-8') as f:
    print(f.readable())
    print(f.writable())
    print(f.read())

    f.write('哈哈哈 ')
    f.write('你愁啥 ')
    f.write('瞅你咋地 ')

    f.write('1111 2222 333 4444 ')

    info=['egon:123 ','alex:456 ','lxx:lxx123 ']
    for line in info:
        f.write(line)
    f.writelines(info)

with open('c.txt',mode='rb') as f:
    print(f.read())

with open('c.txt',mode='wb') as f:
    f.write('哈哈哈 '.encode('utf-8'))
    f.write('你愁啥 '.encode('utf-8'))
    f.write('瞅你咋地 '.encode('utf-8'))

三 a: 只追加写模式
1 当文件不存时,新建一个空文档,文件指针跑到文件的末尾
2 当文件存在时,文件指针跑到文件的末尾

with open('c.txt',mode='at',encoding='utf-8') as f:
    print(f.readable())
    print(f.writable())
    f.read()

    f.write('虎老师:123 ')

在文件打开不关闭的情况下,连续的写入,下一次写入一定是基于上一次写入指针的位置而继续的
with open('d.txt',mode='wt',encoding='utf-8') as f:
    f.write('虎老师1:123 ')
    f.write('虎老师2:123 ')
    f.write('虎老师3:123 ')

with open('d.txt',mode='wt',encoding='utf-8') as f:
    f.write('虎老师4:123 ')

with open('d.txt',mode='at',encoding='utf-8') as f:
    f.write('虎老师1:123 ')
    f.write('虎老师2:123 ')
    f.write('虎老师3:123 ')
with open('d.txt',mode='at',encoding='utf-8') as f:
    f.write('虎老师4:123 ')

原文地址:https://www.cnblogs.com/zjh009/p/9469515.html