zoukankan      html  css  js  c++  java
  • 文件处理

     

     

    文件处理

    一、文件处理流程

    1.打开文件,得到句柄并赋值给一个变量

    2.通过句柄对文件操作

    3.关闭文件

    二、基本操作流程

    f=open('a.txt')
    first_line=f.readline()
    print('first line:',first_line)
    data=f.read()
    print(data)

    三、文件打开模式

       打开文件时,需要指定文件以某种模式打开,打开后即可获得文件的句柄,再通过文件句柄对文件进行操作。

       文件打开有四种模式'a','r','w','b'

       'r'只读模式,默认模式。

       'w'只写模式,如果文件存在,则清空。

       'a'追加模式【可读;   不存在则创建;存在则只追加内容】

       'b'以字节表示

      

    "+" 表示可以同时读写某个文件

    • r+, 读写【可读,可写】
    • w+,写读【可读,可写】
    • a+, 写读【可读,可写】

    注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

    四、文件内光标移动

    一: read(3):

      1. 文件打开方式为文本模式时,代表读取3个字符

      2. 文件打开方式为b模式时,代表读取3个字节

    二: 其余的文件内光标移动都是以字节为单位如seek,tell,truncate

    注意:

      1. seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的

      2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果

    五、open函数详解

    1.open 语法

    open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=True]]]]]])
    open函数有很多的参数,常用的是file,mode和encoding
    file文件位置,需要加引号
    mode文件打开模式,见下面3
    buffering的可取值有0,1,>1三个,0代表buffer关闭(只适用于二进制模式),1代表line buffer(只适用于文本模式),>1表示初始化的buffer大小;
    encoding表示的是返回的数据采用何种编码,一般采用utf8或者gbk;
    errors的取值一般有strict,ignore,当取strict的时候,字符编码出现问题的时候,会报错,当取ignore的时候,编码出现问题,程序会忽略而过,继续执行下面的程序。
    newline可以取的值有None, , , ”, ‘ ',用于区分换行符,但是这个参数只对文本模式有效;
    closefd的取值,是与传入的文件参数有关,默认情况下为True,传入的file参数为文件的文件名,取值为False的时候,file只能是文件描述符,什么是文件描述符,就是一个非负整数,在Unix内核的系统中,打开一个文件,便会返回一个文件描述符

    六、上下文管理

    with open('a.txt','r',encoding='utf-8') as f1,
    open('b.txt','w',encoding='utf-8') as f2:
         data=f1.read()
         f2.write(data)

    七、文件修改

    文件的修改实质上是文件的替换。

    import os
    with open('a.txt','r',encoding='utf-8') as read_f,
            open('.a.txt.swap','w',encoding='utf-8') as write_f:
        for line in read_f:
            if line.startswith('hello'):
                line='哈哈哈
    '
            write_f.write(line)
    
    os.remove('a.txt')
    os.rename('.a.txt.swap','a.txt')
  • 相关阅读:
    Suricata, to 10Gbps and beyond(X86架构)
    golang语法学习(一):变量,常量以及数据类型
    Linux相关问题-CentOS6.5 x64版本号下Tomcat无法自启动的解决的方法
    软考之路--你存在我深深的脑海里
    Apache虚拟主机-解惑篇
    Apache 性能调优-参考篇
    Jmeter脚本录制
    整理LVS架构压力测试工作
    关于jboss的线程问题+java.lang.outofmemoryError
    CUDA入门
  • 原文地址:https://www.cnblogs.com/hzauq/p/7246972.html
Copyright © 2011-2022 走看看