• 3.文件操作及编码解码补充


    文件操作:
    1.打开文件
    f = open(name,mode)
    name:文件名的字符串
    mode:访问模式(只读,写入,追加等)
    2.读写等操作
    date = f.read()
    3.关闭文件
    f.close()

    模式详解:如果省略书写访问模式,则访问模式默认为r或rb.通常只用主模式读写文件
    r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    1.有文件就读取,无文件则报错.
    2.r模式不支持写入,用.write()函数则报错
    rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
    r+ 打开一个文件用于读写。文件指针将会放在⽂文件的开头。
    rb+ 以二进制格式打开⼀一个文件用于读写。文件指针将会放在文件的开头。
    w 打开一个文件只用于写入。
    1.如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。只要执行w模式的open就清空原有文件
    2.如果该文件不存在,创建新文件。
    3.如果执行.write()会覆盖原有内容
    wb 以⼆进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不不存在,创建新文件。
    w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不不存在,创建新文件。
    wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不不存在,创建新文件。
    a 打开一个文件用于追加。
    1.如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。
    2.如果该文件不存在,创建新文件。
    ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
    ab+ 以⼆进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

    读取函数(f = open("filename")
    1.f.read(num) 参数num是指要从文件中读取的数据长度(字节),可省略,省略表示读取所有数据
    2.f.readlines() 按行读取整个文件,返回一个列表,每行内容为一个元素,注意:readlines读取的每行包括换行符
    3.f.readline() 一次读取一行内容

    文件和文件夹操作(需要导入os模块import os)
    1.重命名
    os.rename("old_name","new_name") 可以操作文件及文件夹
    2.删除
    os.remove("file_name") 无此文件会报错
    3.创建文件夹
    os.mkdir("dir_name") 重复创建同名文件夹会报错
    4.删除文件夹
    os.rmdir("dir_name") 无此文件夹会报错
    5.获取当前文件的路径
    os.getcwd()
    6.改变目录路径
    os.chdir("dir_name") 无此文件夹会报错
    7.获取目录列表
    os.listdir("dir_name") 返回dir_name文件夹内所有文件文件夹列表,不写dir_name则为当前文件夹

    读取文件示例:
    对于读取到的某行进行进一步操作
    for index,line in enumerate(f.readlines()):
    if index == 9:
    print("-----------分割线----------")
    continue
    print(line.strip())
    以上对于第10行替换成分割线
    readlines()一次读取全部文件内容,这种方法对于大文件读取非常不友好,慎用

    count = 0
    for line in f:
    if count == 9:
    print("-----------分割线----------")
    count += 1
    continue
    print(line)
    count += 1
    这个方法采用迭代方式处理读取到的行数据,内存里只存储一行,常用

    文件指针seek():用来移动文件指针
    f.seek(偏移量,起始位置) 起始位置(0:文件开头 1:当前位置 2:文件结尾)

    f.tell() 返回一个int,指示目前光标位置
    f.encoding 不需要括号,返回一个字符串,当前打开文件的编码
    f.seekable() 判断文件是否可以移动指针
    f.readable() 判断文件是否可读
    f.writeable() 判断文件是否可写
    f.closed() 判断文件是否关闭
    f.flush() 强制刷新
    f.truncate(int) 从开头截取int个字符

    with语句
    with open("file_name","r") as f: with代码块执行完毕自动关闭文件
    with open("file_name","r") as f1 , open("file_name","w") as f2: with语句支持同时打开多个文件

    编码解码
    查看当前默认字符编码集
    import sys
    sys.getdefaultencoding()











  • 相关阅读:
    HashMap源码分析——基于jdk1.7
    HashMap线程不安全的体现
    Java线程状态转换
    Java多线程——中断机制
    ThreadPoolExecutor解析
    Java中的CAS原理
    AQS框架源码分析-AbstractQueuedSynchronizer
    深入学习CSS外边距margin(重叠效果,margin传递效果,margin:auto实现块级元素水平垂直居中效果)
    CSS布局 两列布局之单列定宽,单列自适应布局思路
    JavaScript 基本类型和引用类型
  • 原文地址:https://www.cnblogs.com/huohu121/p/12232745.html
Copyright © 2020-2023  润新知