zoukankan      html  css  js  c++  java
  • 文件的基本操作一

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

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

    3 如何用文件

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

    l=[1,2,3]
    l.append(4)
    l.append(5)
    print(l)

    把硬盘中的数据读到内存中
    rawstring
    f=open(r'E:SH_fullstack_s2day08a.txt',mode='r') # 向操作系统发起请求,要求操作系统打开文件,占用操作系统的资源
    f1=10
    f2='aaaa'
    f2.index()
    print(f)
    y=2
    data=f.read() # 向操作系统打开发起读请求,会被操作系统转成具体的硬盘操作,将内容由硬盘读入内存
    print(data)

    del f
    f.close() #向操作系统发起请求,要求操作系统关闭文件,回收系统资源
    print(f)
    f.read()

    总结:
    1、打开文件
    2、读写
    3、关闭


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

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

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


    r:read,只读模式
    1、只能读,不能写
    2、在文件不存在时,会报错,在文件存在的时候会将文件指针移动到开头
    f=open(r'b.txt',mode='rt',encoding='utf-8')
    data1=f.read()
    print('第一次:',data1)
    # print(type(data1))

    # data2=f.read()
    # print('第二次:',data2)
    f.close()

    f=open(r'b.txt',mode='rt',encoding='utf-8')
    data2=f.read()
    print('第二次:',data2)
    f.close()

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

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


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

    lines=['1111 ','2222 ','33333 ']
    # for line in lines:
    # f.write(line)
    f.writelines(lines)

    f.close()


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

    f=open('d.txt',mode='at',encoding='utf-8')
    print(f.readable())
    f.read()

    f.write('555555 6666 ')
    f.writelines(['77777 ','8888888 ','999999999 '])

    f.close()

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

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

    f=open('oldsiji.mp4','rb')
    data=f.read()
    f.close()

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


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


    上下文管理
    with open('e.txt','rb') as f,open('j.txt','wt',encoding='utf-8') as f1:
    #文件的操作
    src_data=f.read()
    res=src_data.decode('utf-8')
    # print(res,type(res))
    f1.write(res)

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

  • 相关阅读:
    精选的一些《编程之美》相关资料
    使用SftpDrive+SourceInsight阅读开源代码
    malloc()参数为0的情况
    《编程之美》4.5磁带文件存放优化:最优解是怎样炼成的
    从《编程之美》买票找零问题说起,娓娓道来卡特兰数——兼爬坑指南
    《编程之美》3.6判断链表是否相交之扩展:链表找环方法证明
    解答《编程之美》1.18问题1:给所有未标识方块标注有地雷概率
    C语言中 Float 数据结构的存储计算
    C#之内存分配
    unity----------------3D模型讲解
  • 原文地址:https://www.cnblogs.com/kingyanan/p/9145746.html
Copyright © 2011-2022 走看看