zoukankan      html  css  js  c++  java
  • 文件操作

    文件处理流程
    (1)打开文件,得到文件句柄(文件对象)并赋值给一个变量
    (2)通过句柄(文件对象)对文件进行操作
    (3)关闭文件

    1 1 # 打开文件:
    2 2 f = open('联系方式.txt', 'a', encoding='utf-8') # 文件句柄
    3 3 # 操作文件(读):
    4 4 data = f.read()
    5 5 # 输出读的结果:
    6 6 print('--read: 
    ', data)
    7 7 # 关闭文件
    8 8 f.close()

    在Python中操作文件两种方式:1.内置函数open()   2.使用with来管理上下文
    一、内置函数open()
    file_obj=open(file, mode='r', encoding='utf-8')
    参数file用来指定文件的相对路径或绝对路径。
    参数mode用来指定文件的打开模式。
    常用模式如下:

    文件打开方式(文件打开模式)
    r ,只读模式[默认模式,文件必须存在,不存在则抛出异常]
    w,只写模式[不可读;不存在则创建;存在则清空内容]
    x, 只写模式[不可读;不存在则创建,存在则报错]
    a, 追加模式[不存在则创建;存在则只追加内容]

    "+" 表示可以同时读写某个文件
    r+, 读写[可读,可写]
    w+,写读[可读,可写]
    x+ ,写读[可读,可写]
    a+, 写读[可读,可写]

    "b"表示以字节的方式操作
    rb 或 r+b
    wb 或 w+b
    xb 或 w+b
    ab 或 a+b

    参数encoding指定操作文件的字符编码,未指定encoding将使用当前操作系统的默认字符编码(Linux默认为UTF-8,Windows默认为GBK)。
    二、使用with来管理上下文

    上下文管理详细解释见https://blog.csdn.net/immortal_codeFarmer/article/details/76796868
    with会打开文件将文件对象赋值给file_obj,然后在执行完子代码块的文件操作后自动调用file_obj.close()方法。
    with open(file, mode='r', encoding='utf-8') as file_obj:
    文件操作...

    操作文件的方法:
    文件对象file_obj内置了操作文件的方法,常用的读写方法有:
    方法名                             含义
    file_obj.read()                  默认读取文件所有内容。
    file_obj.readline()             默认读取一行内容。
    file_obj.readlines()           默认读取文件所有行,以列表的形式返回。
    file_obj.write(s)                写入内容s。
    file_obj.writelines(lines)   将序列lines中的所有元素写入。

    当方法read()、readline()返回空字符串/字节串时,代表文件读取完毕

    1 while True:
    2 line=file_obj.readline()
    3 if not line:
    4 break
    5 print(line)

    也可以使用更为便捷的for循环来迭代读取文件的每一行内容

    1 for line in file_obj: #迭代一次则读出文件一行内容并赋值给line,读完为止
    2 print(line)

    文件对象常用的方法:
    flush() -> 把缓冲区的内容写入文件,当不关闭文件
    close() -> 把缓冲区的内容写入文件,同时关闭文件,并释放文件对象
    read([size]) -> 从文件中读取size个字节(python2)或字符(python3)的内容作为结果返回,如果省略size则一次性读取所有内容
    readline() -> 从文本文件中读取一行内容作为结果返回
    readlines() -> 把文本文件中的每一行作为一个字符串存入列表中返回该列表
    tell() -> 返回文件指针的位置
    seek(offset[,where]) -> 移动文件指针
    truncate([size]) -> 删除从当前指针位置到文件末尾的内容,如果指定了size则不论指针在哪只留下前size个字符其余的删除
    write(s) -> 把字符串s的内容写入文件
    writelines(s) -> 把字符串列表写入文本文件,不添加换行符

    文件指针移动
    每个文件对象内部都维护一个文件指针,以r或w模式打开文件时指针指向文件开头,以a模式打开文件时指针指向文件末尾,读写操作都是基于上一次指针所在位置的基础上进行偏移的。

    我们也可以使用方法file_obj.seek(offset,whence)控制指针的偏移:

    offset代表偏移量,单位为字节。
    whence默认值的为0,代表以文件开头为参照物。
    whence=1则代表以当前位置为参照物。
    where=2则代表以文件末尾为参照物。

    1 with open('test.txt','w+b') as f:
    2 f.write('大王叫我来巡山'.encode('utf-8'))
    3 print(f.tell()) #查看当前指针所在位置为21
    4 f.seek(3,0) #以文件开头为起始,移动3个字节,移过了中文字符'大'
    5 print(f.tell()) #查看当前指针所在位置为3
    6 print(f.read(3).decode('utf-8')) #再读取3个字节,解码的结果为字符'好'
  • 相关阅读:
    怎样做一个合格的程序猿
    error: No resource identifier found for attribute 'format24Hour' in package 'android'
    【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第五步)(4)
    Length of last word--LeetCode
    SmartController智能控制系统
    湘潭-1203-A simple problem
    android中检測网络连接状态简单总结
    AppDomain.CurrentDomain.BaseDirectory与Application.StartupPath的差别
    please set a system env PAODING_DIC_HOME or Config paoding.dic.home in paoding-dic-home.properties p
    与IBM的Lin Sun关于Istio 1.0和微服务的问答
  • 原文地址:https://www.cnblogs.com/xfxing/p/9059653.html
Copyright © 2011-2022 走看看