• 【python 文件操作】python 文件操作


    计算机由软件、系统、硬件组成。

    python或其他语言编写的应用程序如果想要把数据永久保存下来,需要把数据写到硬盘上面,这就涉及到应用程序操作硬件,众所周知,程序无法直接操作硬件,这就用到了操作系统。系统 把复杂的硬件操作封装成简单的接口/应用程序使用,其中文件就是操作系统供给程序操作硬盘的虚拟概念,用户或应用程序操作文件,可以将数据永久保存下来

    文件的操作步骤:

      1、打开文件,并返回一个语句柄并赋值一个变量

      2、通过返回的语句柄操作文件

      3、关闭文件

    # 打开文件,得到语句柄赋值给一个变量

    f = open("test.txt", 'w', encoding = "utf-8")

    #对文件操作

    f.write("11111")

    #关闭文件

    f.close()

    #1、应用系统向操作系统发起一个open(。。。。)

    #2、操作系统打开该文件,并返回一个语句柄

    #3、应用程序把语句柄赋值给一个变量

    #打开一个文件包含两个资源:一个是操作系统级打开文件,另一个为应用程序变量,操作完一个文件后需要把与该文件这两部分资源全部回收,

    第一种方法:f.close()

    第二种方法:del f

    f.close(),一定要在del f 之前,否则系统打开的文件没有关闭,白白占用资源。python有垃圾自动回收机制,无需考虑del f

    最好的方法可以使用with open(‘test.txt’,'w')as f:

                 pass

    with open('test.txt','r') as read_f ,open('tate.txt','r') as write_f:

      data = read_f.read()

      write_f.write(data)

    文件以什么编码编写,需要使用对应的编码打开

    文件打开模式(默认文本模式):

      r :默认读模式【默认模式,文件必须存在,否则报错】

      w:只写模式【不存在则创建,存在则清空内容】

      a:只追加写模式【不可读,不存在者创建,存在则只追加内容】

    以上只适用文本模式,如需打开图片、视频、,需要使用b模式打开,表示字节操作(图片、视频,是以字节编码存储,无需考虑编码方式)

    wb

    rb

    ab  

    注释:以b模式打开文件,读取内容以字节方式,写入也需要字节方式,不能指定编码

    # “+”表示可以同时读写某个文件

    r+ :读写【可读、可写】

    w+ :写读【可写,可读】

    a+ :写读【可读、可写】

    x:只写【不可读,不存创建,否则报错】

    x+ :写读【可读,可写】

    read(3),文本模式:读取三个字符串,b模式:3个字节、

    光标:

    seek(0),tell,truncate()都是一字节单位:

    seek 有三种方式0,1,2,其中1,2必须在b模式下进行,truncate截断文件,不能以w/w+ 进行,那样会清空文件,请在r+/a/a+ 模式下进行。

     with的方便之处:在于防止打开文件,而忘记关闭

    文件的修改有两种方法,第一种:一次性读出,操作后,然后在写入另外一个文件。然后把之前的文件删除,被写入的文件重命名为删除的文件名称

    第二种:可以一行一行读入然后修改,修改后保存至另外一个文件内

    文件操作:流程

    找到——>以什么方式打开——>操作——>关闭

    f =  open('test',"w")

    1、读文件的方式(从文件中获取的内容都是字符串):

      一、read 方法,一次性的读出文件所有内容

      二、f.read(5)独一部分,读五个字符、换行符也算

      三、readline、按照行读,每次执行readline 就会读下一行

      四、readlines、返回一个列表,将列表中每一行作为列表的元素返回一个列表

    strip()去掉空格、制表符、换行符

      五、for循环:for i in f:

              print(i)

     文件的  r+ :

    r+ 有两种方式,

    (1)先写后读

    文件操作:2.x 有xreadliens:返回的是一个迭代器,但是在Python3.x中被弃用了,使用for循环代替
    #text内容:this is a turncate test,***
    f= open('text.txt', 'r+',encoding="utf-8")
    
    f.write('')
    print("",f.read())
    f.close()
    f= open('text.txt', 'r+',encoding="utf-8")
    print('',f.read())
    #输出结果:
    一 s is a turncate test,***
    
    二 人s is a turncate test,***

    通过上面的输出结果就可以看出,文件的r+模式,先写后读模式:(1)从头开始写,而且是按照字节的方式修改。“this”是四个字节,“人”中文字符占三个字节(2)先写后读的模式,修改后紧接着输出,输出的内容和保存后修改的内容不同。

    (2)先读后写(追写)

    会按照追加的模式进行写入。

    Python中没有方法去修改文件

    (3)truncate:保留指定字节之前的内容

    obj1 = open('text.txt','r+')
    obj1.write('this is a truncate test,***')
    obj1.seek(0)
    print ('first read:
    ',obj1.read())
    obj1.truncate(5)
    obj1.close()
  • 相关阅读:
    Java的类演进过程
    P112、面试题16:反转链表
    P107、面试题15:链表中倒数第K个结点
    Java对象相关元素的初始化过程
    P102、面试题14:调整数组顺序使奇数位于偶数前面
    P99、面试题13:在o(1)时间删除链表结点
    面试常考的数据结构Java实现
    Linux命令面试常考的简单汇总
    操作系统与进程基础知识
    python--process
  • 原文地址:https://www.cnblogs.com/huyangblog/p/7756394.html
Copyright © 2020-2023  润新知