zoukankan      html  css  js  c++  java
  • Python基础之文件操作

    • 学习目录
    • 文件操作步骤
    • 读文件
    • 写文件
    • 文件模式
    • 文件方法
    • open方法
    • with方法
    • for结合相关方法操作
    • 字符编码

    0x01 文件操作步骤

    • 打开文件
    • 写入文件内容
    • 关闭文件
    • Example: 打开文件步骤
    # 打开文件(首先,文件需要存在)  
    f = open("file.txt", 'w').read()
    
    # 写入文件  
    f.write('Hello Python')
    
    # 关闭文件  
    f.close()
    
    • Example: 追加文件
    # 追加写入文件(在文件尾写入)
    f = open("file.txt", "a", encoding="utf-8")
    f.write("Hello Python
    飞上天去?
    我们都不一样
    ")
    f.close()
    
    • Example: 全局申明
    ENCODEING = "utf -8"
    

    0x02 文件读操作

    • 语法格式
    • 格式
    file = open('filename', 'mode', encoding)
    

    PS:

    • filename: 文件名称或全路径文件
    • mode: 读取文件模式
    • encoding:文件编码格式
    • Example: 打开文件
    f = open('file.txt', 'r', encoding='utf8')               # 确保file.txt文件内有内容   
    print(f.read())
    f.close()
    

    0x03 文件写操作

    • 语法格式
    • 格式
    file.write('string')
    
    • Example: 写文件
    f = open('file.txt', 'w', encoding='utf8')               # 确保file.txt文件内有内容
    f.write('你好?
    Hello Python.
    ')
    f.close()
    

    0x04 文件模式

    • 常规文件模式
    • 读写文件模式
    • 二进制文件模式
    • 常规文件模式
    r     # 只读模式(默认模式,文件必须存在,不存在则抛出异常)
    w     # 只写模式(不可读;不存在则创建;存在则清空内容)
    x     # 只写模式(不可读;不存在则创建,存在则报错)
    a     # 追加模式(可读;   不存在则创建;存在则只追加内容)
    
    • 读写文件模式
    r+    # 读写
    w+    # 写读
    x+    # 写读
    a+    # 追加读写
    

    PS:

    • 均可读,可写
    • 二进制文件模式
    rb    # 读二进制文件
    wb    # 写二进制文件
    xb    # 读写二进制文件 
    ab    # 追加二进制文件 
    

    0x05 文件方法

    • 方法
    f.closed()     # 判断文件关闭,打开提示False,关闭提示True
    f.flush()      # 修改内容,强制刷新到文件中
    f.isatty       # 判断是否为终端文件
    f.mode         # 查看文件的打开模式
    f.name         # 文件名称
    f.next         # 迭代方法。与readline像,区别,next读到末尾会报错,readline会继续返回null
    f.read         # 读取文件内容,以字符串形式输出
    f.readable()   # 判断文件是否可读
    f.readline()   # 每次读取一行内容
    f.readlines()    # 读取所有内容,以列表方式存取(适合操作小文件)
    f.seek(0)      # 调整读取文件指针位置
    f.seekable()   # 判断文件可以调整指针位置(tty,磁盘等文件是不能被seek的),可以返回True,否则返回False  --> Py3
    f.tell()       # 查询文件当前读取位置(以字符为单位)
    f.truncate()   # 截取文件,从头开始截取,不指定指针位置,会清空文件
    f.write()      # 把内容写入至文件中
    f.writelines() # 把字符串列表写入文件中
    f.xreadlines() # 读一行打印一行,针对大文件非常适用 -----> Py2适用,Py3取消
    f.encoding()   # 查看文件编码
    f.writeable()  # 判断文件是否可以写
    f.fileno()     # 返回文件在操作系统的文件描述符(默认会为:0 --> stdin、1 --> stdout,2 --> stderr)
    

    0x06 open()方法

    • 用法
    • 语法
    • 用法
      * 打开文件,创建文件对象,与相关方法结合进行读写操作
    • 语法
    file object = open(file_name [, access_mode][, buffering])
    

    PS:

    • file_name # 文件名称
    • access_mode # 文件模式,默认为:r
    • buffering # 寄存区的缓冲大小。 0不会寄存,1访问文件时会寄存行
    • Example: 打印诗歌
    f = open('file.txt', 'r', encoding='utf8').read()         # 确保file.txt文件存在却包含内容
    print(f)
    

    0x07 with方法

    • 特点
    • 语法
    • 特点
      * 节省每次都需要f.close(),文件用完后自动关闭
    • 语法
    # 单个文件   
    with open('file_name','access_mode') as obj1:
        pass
    
    # 多个文件
    with open('file_name','access_mode') as obj1, with open('file_name','access_mode') as obj2:
        pass
    

    0x08 for结合相关方法操作文件

    • with结合for循环打印单个文件
    • with结合for循环打印多个文件
    • Example: with结合for循环打印单个文件
    with open('file.txt', 'r', encoding='utf-8') as f:
        for i in f:
            print(i)
    
    • Example: 双层循环打印多个文件
    with open('file.txt', 'r', encoding='utf-8') as f1, 
          open('files', 'r', encoding='utf-8') as f2:
        for x in f1:
            for y in f2:
                print(y)
            print(x)
    
    • Example: with()结合codecs模块使用
    import codecs
    
    # 写入操作
    with codecs.open("file.txt", 'w') as f:
        f.write("Hello World
    大家好,才是真的好
    ")
    
    # 读取操作
    with codecs.open("file.txt", 'r', encoding="utf-8") as f:
        print(f.read)
    

    0x09 字符编码

    • 什么是编码?
    • 常见编码?
    • 特点
    • 什么是编码?
      * 从明文到编码文本的转换称为"编码",从编码文本又转回成明文则为"解码"
    • 常见编码?
      * ASCII
      * GBK
      * Unicode
      * utf-8
    • 特点
      * py2默认ASCII
      * py3默认utf-8
      * unicode分:
      ---> utf-32(占4个字节)
      ---> utf-16(占两个字节)
      ---> utf-8(占1-4个字节)utf-8即unicode编码
      * 在py3内:
      ---> encode转码的同时会把string变成bytes类型
      ---> decode解码的同时会把bytes变回string

    0x10 示例整理

    • 打印单个文件内容
    • with结合for打印单个文件
    • 修改文件内容,replace()方法
    • Example: readline()一次读取一行
    f = open('file.txt', 'r', encoding='utf-8')
    print(f.readline())
    print(f.readline())
    print(f.readline())
    
    • Example: readlines()读取一个文件列表(迭代方式)
    f = open('file.txt', 'r', encoding='utf-8')
    print(f.readlines())
    
    • Example: readlines()结合for使用
    f = open('file.txt', 'r', encoding='utf-8')
    for i in f.readlines():
        print(i)
    
    • Example: 结合enumerate()打印行号
    f = open('file.txt', 'r', encoding='utf-8')
    for i, j in enumerate(f.readlines()):
        print("第 {0} 行内容为: {1}".format(i, j))
    
    • Example: 打印单个文件内容
    f1 = open("file.txt", "r", encoding="utf-8")
    for line in f1:
        print(line)
    
    • Example: with结合for打印单个文件
    with open("file.txt", "r", encoding="utf-8") as f1:
        for line in f1:
            print(line)
    
    • Example: 修改文件内容replace()
    f1 = open("file.txt", "r", encoding="utf-8")   
    f2 = open("files", "w", encoding="utf-8")    
    name1 = 'Robin'
    name2 = 'Robin.Chow'
    for i in f1:
        if name1 in i:
            i = i.replace(name1, name2)
        f2.write(i)
    f1.close()
    f2.close()
    
  • 相关阅读:
    Python使用inspect查看代码参数
    Python的hasattr() getattr() setattr()
    Module-GitBook使用手册
    Module-Hadoop技术文档
    Module-Git使用手册
    Module-Faker使用手册
    Module-Docker使用手册
    Module-DB2技术文档
    Module-Dask并行任务调度
    Module-Apache使用说明
  • 原文地址:https://www.cnblogs.com/RobinChow/p/8710104.html
Copyright © 2011-2022 走看看