• Python 文件I/O


    一,对文件进行操作的流程:

         第一,建立文件对象。

         第二,调用文件方法进行操作。

         第三,不要忘了关闭文件。(文件不关闭的情况下,内容会放在缓存,虽然Python会在最后自动把内容读到磁盘,但为了以防万一,要养成关闭文件的习惯)

    eg:f = open('1,txt',encoding ='utf-8')

         print(f.read())

         f.close()

    二,不同模式打开文件的完全列表:

    注:只要沾上r,文件不存在的时候,打开都会报错

    
    

           只要沾上w,把文件内容清空

    不同模式及不同模式下的指针位置:

    三,文件操作方法

    f.seek(n)  #查看光标定位
    f.tell() #查看当前文件中指针的位置
    f.truncate() #清空文件内容
    f = open('file1,txt',encoding ='utf-8')
    print(f.tell()) #光标默认在起始位置
    f.seek(10) #把光标定位到第10个字符之后
    print(f.tell()) #输出10
    f.close()
    常用操作:
    f = open('file.txt','a+')

    f.seek(0) #把光标定位到起始位置
    f.truncate() #清空文件内容
    f.read() #读取文件里面所有的内容,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话会把内存撑爆
    f.readline()#读取一行的内容
    f.readlines()#读取所有文件内容,返回一个list,元素是每行的数据,大文件时不要用,
    因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
    f.readable()#判断文件是否可读
    f.write() #写入内容 写的时候传入一个str类型
    f.writelines() #str list dic 元组类型(写的时候传入一个可迭代的对象)
    f.flush() #立即把缓冲区里面的内容写到磁盘里
    
    
    大文件时,读取文件高效的操作方法:

    f = open('file.txt')
    for line in f:
    print(line)
    这样的话,line就是每行文件的内容,读完一行的话,就会释放一行的内存
    
    

    with使用:在操作文件的时候,经常忘了关闭文件,这样的就可以使用with,它会在使用完这个文件句柄之后,自动关闭该文件,使用方式如下:

     with open('file.txt','r'as f:#打开一个文件,把这个文件的句柄付给f

              for line in f:
                  print(line)
       with open('file.txt') as fr,with open('file_bak','w') as fw: #这个是多文件的操作,打开两个文件,fr是读file.txt,fw是新建一个file_bak文件
               for line in fr:#循环file.txt中的每一行
                   fw.write(line)#写到file_bak文件中
     
     四、修改文件
    1、第一种 简单粗暴的
        1、先把所有的内容读出来
        2、再把文件内容清空
    3、再把新的内容写进去
    2、两个文件
    循环第一个文件,逐行处理,处理完一行写到新文件里面。

    删掉旧的文件,新的文件改名。
     实例如下:
    法一:with open('geci','a+',encoding='utf-8') as f:
    f.seek(0)
    all = f.read()
    new_all = all.replace('二','一')
    f.seek(0)
    f.truncate()
    f.write(new_all)
    f.flush()

    法二:import os
    with open('geci',encoding='utf-8') as f,open('geci.gy','w',encoding='utf-8') as f2:
    for line in f:
    new_line = line.replace('一','二')
    f2.write(new_line)

    os.remove('geci')#删文件
    os.rename('geci.gy','geci')#改名
     
  • 相关阅读:
    【转】SQL server 随机数函数
    [HTML] 焦点的丢失和回复
    [PHP] PHP & HTML & JavaScript & MySQL 代码如何互相传值
    [TWAIN] 3句话总结TWAIN在Windows Server 2008 R2 SP1的使用
    PHP & HTML & JavaScript & MySQL中GBK中文乱码解决
    PDFCreator 安装在Win 2008 R2 Server.
    cer格式证书变换成crt格式
    如何在WI 5.4上激活Receiver下载和更新
    啊喂
    [Receiver 3.3][首发] Receiver 的命令安装
  • 原文地址:https://www.cnblogs.com/chendai21/p/8137186.html
Copyright © 2020-2023  润新知