文件基本操作(一)

一、

1 什么是文件?

    文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位
    文件的操作核心就是:读、写
    即我们只需要对于进行读写操作,就是对操作系统发起请求,然后由操作系统将用户或者应用程序
    对文件的读写操作转换成具体的硬盘指令(比如控制盘片转动,控制机械手臂移动来读写数据)


2 为什么要有文件?
    因为内存无法永久保存数据,但凡我们想要永久保存数据都需要保存到硬盘中,
    而操作文件就可以实现对硬件的操作


3 如何用文件

name='egon'
pwd='123'
#把内存中的数据存储到硬盘中去



把硬盘中的数据读到内存中

f=open(r'E:\python练习\day08\a.txt',mode='r',encoding='utf-8') # 向操作系统发起请求,要求操作系统打开文件,

占用操作系统的资源

#开头中的r即rawstring(原生字符串)
#或者加\取消转译  f=open(E:\\python练习\\day08\\a.txt',mode='r',encoding='utf-8')

    f1=10
    data=f.read() # 向操作系统打开发起读请求,会被操作系统转成具体的硬盘操作,将内容由硬盘读入内存
        print(data)
    f.close() #向操作系统发起请求,要求操作系统关闭文件,回收系统资源


总结:

1、打开文件
2、读写

3、关闭

二、

1、绝对路径:从盘符(C:\\ E:\\ D:\\)开始写一个完整的路径
2、相对路径:相对于当前执行文件所在的文件夹开始找

                       如:f=open(r'a\a.txt')

控制读写文件内容的结果有两种:t模式(text),b模型(bytes)
注意:
1、t与b这两种模式均不能单独使用,都需要与r/w/a之一连用
2、默认的内容格式是t
3、只有文本文件才能用t模式,也只有文本文件才有字符编码的概念

操作文件的基础模式有三种:
1、r,默认的
2、w
3、a
综上,默认是rt

r:read,只读模式
1、只能读,不能写
2、在文件不存在时,会报错,在文件存在的时候会将文件指针移动到开头

            f=open(r'a.txt',mode='rt',encoding='utf-8')
    data1=f.read()
    print('第一次:\n'+data1)
    print(type(data1))

    data2=f.read()
    print('第二次:\n'+data2)
    f.close()

    f=open(r'a.txt',mode='rt',encoding='utf-8')
    # print(f.readable())
    print(f.readline(),end='')

    lines=f.readlines()
    print(lines)
    f.close()

w:只写模式
1、只能写,不能读
2、在文件不存在时会创建空文件,在文件存在的时候会将文件内容清空
    f=open(r'b.txt',mode='wt',encoding='utf-8')
    # print(f.readable())
    f.write('你好啊我的天\n你好哇我的地\n啊啊啊啊啊啊\n')
    f.write('2333333\n')
    f.write('520')

    lines=['你好啊我的天\n你好哇我的地\n啊啊啊啊啊啊\n']
    # for line in lines:
    #     f.write(line)
    f.writelines(lines)   writelines可以直接写出列表里面的内容
    f.close()

    a:只追加写模式
    1、只能写,不能读
    2、在文件不存在时会创建空文件,在文件存在的时候会将指针移动到文件末尾

    f=open('a.txt',mode='at',encoding='utf-8')
    f.write('\n5555\n6666\n')
    f.writelines(['777\n','888\n','999\n'])
    f.close()

    b:二进制模式(bytes)
    注意:
    1、一定不能指定字符编码,只有t模式才与字符编码有关
    2、b是二进制模式,是一种通用的文件读取模式,因为所有的文件在硬盘中都是以二进制形式存放的

    f=open('egon.jpg','rb')
    data=f.read()
    print(data)
    f.close()

    f=open('oldsiji.mp4','rb')
    data=f.read()
    f.close()          #需占用内存太大了,不能运行

    f=open('oldsiji.mp4','wb')
    f.write(data)
    f.close()

循环读
    f=open('b.txt','rt',encoding='utf-8')
    for line in f:
        print(line)
    f.close()

    f=open('E:\\二期视频\\day08\\day08\\oldsiji.mp4','rb')
    for line in f:
        print(line)
    f.close()

    f=open('b.txt','rb')
    for line in f:
        print(line)
    f.close()

    f=open('b.txt','wb')
    f.write('你好啊'.encode('utf-8'))
    #wb只能写成二进制类型,再用utf-8编码一下
    f.close()

    f=open('b.txt','ab')
    f.write('\n大家好,我是egon'.encode('utf-8'))
    f.close()

上下文管理

with open('b.txt','rb') as f,open('a.txt','wt',encoding='utf-8') as f1:
    #文件的操作
    src_data=f.read()
    res=src_data.decode('utf-8')
    print(res,"\n",type(res))
    f1.write(res)

with open('a.txt','rb') as f,\
        open('j.txt','wb') as f1:
    #文件的操作
    f1.write(f.read())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值