zoukankan      html  css  js  c++  java
  • 005-2-Python文件操作

    Python文件操作(file)

    文件操作的步骤:

    1. 打开文件,得到文件句柄并赋值给一个变量
    2. 通过句柄对文件进行操作
    3. 关闭文件(操作文件后记住关闭)

    1.读写文件的基础语法:

    open() 将会返回一个 file 对象,基本语法格式如下:

    open(filename, mode)
    
    • filename:变量包含你要访问的文件路径名称
    • mode:决定打开文件的模式:读、写、追加等;默认文件的访问方式为只读(r)。

    2.文件打开方式列表:

    \模式\ 描述
    r 以只读方式打开文件。文件的指针会放在文件开头,默认模式。
    rb 以二进制格式打开一个文件用于只读,文件的指针会放在文件开头。copy文件时可以使用该模式;
    r+ 打开一个文件用于读写,文件的指针会放在文件开头。
    rb+ 以二进制格式打开一个文件用于读写,文件的指针会放在文件开头。
    w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
    ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

    3.writable() 和 readable()用于判断文件是否可写 或者 可读

    with open("b.txt","r",encoding="utf-8") as b:
        print(b.readable())
        print(b.writable())
    

    输出:

    True
    False
    

    4.losed判断文件是否为打开状态!

    f = open("b.txt","r",encoding="utf-8")
    print(f.closed)
    f.close()
    print(f.closed)
    

    输出:

    False
    True
    

    2 Python File(文件)操作方法

    知:有a.txt文件

    正趣果上果
    Interesting fruit fruit
    
    词:郭婞
    曲:陈粒
    编曲/混音/和声:燕池
    萧:吗子
    Words: Guo 婞
    Song: Chen tablets
    Arrange / Mix / Harmony: Yan Chi
    Xiao: Well
    
    你佩桃木降妖剑
    他会一招不要脸
    哇呀呀呀
    输在穷B
    输在穷B
    You wear peach down demon sword
    He will shamelessly
    Wow yeah
    Lost in the absence of money
    Lost in the absence of money
    

    1.file.close()关闭文件,关闭文件不能再进行读写操作
    close() 方法语法如下:

    fileObject.close();
    

    实例:

    f = open("a.txt","r",encoding="utf-8")		# 打开文件依照“r”模式,字符编码为“utf-8”
    first_line = f.readline()	# 读文件 1 行
    print(first_line)
    
    f.close()					# 关闭文件
    print(f.closed)				# 用于判断 文件是否关闭状态
    

    输出:

    正趣果上果
    
    True
    

    2.file.flush()刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入
    flush() 方法语法如下:

    fileObject.flush();
    

    实例:

    f = open("b.txt","w",encoding="utf-8")
    f.write("Python 是一个非常好的语言。
    是的,的确非常好!!
    ")
    f.flush()                                # 刷新缓冲区 会 立即将文件写入硬盘
    f.close()
    

    3.__next__返回文件下一行。

    f = open("a.txt","r",encoding="utf-8")
    print(f.__next__().strip())
    

    输出:

    正趣果上果
    

    4.read([size])从文件读取指定的字节数,未指定读取所有内容。

    with open("a.txt","r",encoding="utf-8") as a:
        print(a.read())
    

    输出:

    正趣果上果
    ... ...
    Lost in the absence of money
    

    5.readline([size])读取整行,包含" "字符,[size]返回指定大小的字节数

    with open("a.txt","r",encoding="utf-8") as a:
        print(a.readline().strip())
        print(a.readline(4))
    

    输出:

    正趣果上果
    Inte
    

    6.readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表

    with open("a.txt","r",encoding="utf-8") as a:
        print(a.readlines())
    

    7.seek(offset[, whence])设置文件的当前位置
    offset:开始的偏移量,也就是代表需要移动偏移的字节数
    whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

    with open("a.txt","r",encoding="utf-8") as a:
        a.seek(30)                  # 将光标从 0 移动 30 个 字节
        print(a.readline())         # 打印这行剩余的内容
        print(a.tell())             # Widnows 系统下的换行代表2个字符,所以打印这行结束的 光标位置
    

    输出:

    ruit fruit
    42
    

    8.tell()打印当前光标所在的位置

    with open("a.txt","r",encoding="utf-8") as a:
        print(a.readline())         # 打印这行剩余的内容
        print(a.tell())             # 打印这行结束的 光标位置
    

    输出:

    正趣果上果
    
    17
    

    9.write(str)将字符串写入到文件,没有返回值

    with open("b.txt","w",encoding="utf-8") as b:
        b.write("你好中国!")
    

    输出如b.txt,不存在创建,存在覆盖;并写入你好中国:

    你好中国!
    

    10.writelines()向文件中写入一序列的字符串,这一序列字符串可以是由迭代对象产生的,如一个字符串列表,换行需要 符

    with open("b.txt","w",encoding="utf-8") as b:
        b.writelines(["你佩桃木降妖剑
    ","他会一招不要脸
    "])
    

    输出创建b.txt:

    你佩桃木降妖剑
    他会一招不要脸
    

    11.writable() 和 readable()用于判断文件是否可写 或者 可读
    with open("b.txt","w+",encoding="utf-8") as b:
    b.writelines(["你佩桃木降妖剑 ","他会一招不要脸 "])
    print(b.readable())
    print(b.writable())

    文件处理案例

    1. sed替换文件内的指定内容
    cat sed.py

    import sys
    import os
    
    if len(sys.argv) != 4:                                         # 判断用户给的参数个数
        print(""want 4 parameters"Usage: sed.py old_file new_file file_name")
        exit(1)
    
    with open(sys.argv[3],"r",encoding="utf-8") as a_r, open("."+sys.argv[3]+"swp","w",encoding="utf-8") as b_w:
        for i in a_r:
            b = i.replace(sys.argv[1], sys.argv[2])                # 替换用户输入的参数
            b_w.write(b)
    
    os.remove(sys.argv[3])										   # 删除源文件
    os.rename("."+sys.argv[3]+"swp",sys.argv[3])				   # 将swp文件重新命名为 源文件
    

    2.copy一个不知存储方式的文件到别处
    cat copy.py

    import sys
    
    # print(sys.argv)
    if len(sys.argv) != 3:                                         # 判断用户给的参数个数
        print(""want 3 parameters"Usage: cp [OPTION]... SOURCE DEST")
        exit(1)
    
    with open(r"%s" % sys.argv[1],"rb") as ly_r, open(r"%s" % sys.argv[2],"wb") as ly_w:
        for i in ly_r:
            ly_w.write(i)
    
  • 相关阅读:
    C#进阶之路——10.C# 接口
    C#进阶之路——9.C# 抽象类
    C#进阶之路——8.C# 继承
    C#进阶之路——7.ASP.NET常用控件
    C#进阶之路——6.C#字符与字符串
    C#进阶之路——5.C#数组与集合
    C#进阶之路——4.C#类属性和方法
    C#进阶之路——3.C#应用程序编译与执行
    mongodb
    Mycat配置文件详解
  • 原文地址:https://www.cnblogs.com/baolin2200/p/6406389.html
Copyright © 2011-2022 走看看