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

    一、文件操作流程

    1. 打开文件,得到文件句柄并赋值给一个变量 # f = open('文件测试', 'r', encoding='utf8')
    2. 通过句柄对文件进行操作 # f.write('hello world')
    3. 关闭文件

    次博测试使用文件如下:

    对酒当歌,人生几何!
    譬如朝露,去日苦多。
    慨当以慷,忧思难忘。
    何以解忧?唯有杜康。
    青青子衿,悠悠我心。
    但为君故,沉吟至今。
    呦呦鹿鸣,食野之苹。
    我有嘉宾,鼓瑟吹笙。
    明明如月,何时可掇?
    忧从中来,不可断绝。
    越陌度阡,枉用相存。
    契阔谈�,心念旧恩。
    月明星稀,乌鹊南飞。
    绕树三匝,何枝可依?
    山不厌高,海不厌深。
    周公吐哺,天下归心。

    二、操作方法

    1. 打开文件的模式

    • r ,只读模式(默认模式);
    • w ,只写模式。【只能写,不能读,如果文件不存在就创建,如果存在就删除了再写】
    • a ,追加模式。【可读,文件不存在就创建文件,如果存在就追加内容】
    • r+ ,可读写文件。【可读;可写;可追加】
    • w+ ,写读模式首先是写,所以会默认先清空所有内容并写入,再读光标后的内容,但是此时光标已经挪到了最后边
    • a+ ,追加+读模式首先是追加,光标先挪到最后再追加,追加之后光标还是在最后

    2. 其他操作

    write直接覆盖,相当于linux的 '>'。

    f = open('文件测试', 'w', encoding='utf8')                        # 此时已经清空,并不是写的时候才进行的清空
    data = f.write('hello world')                            
    f.close()

    直接创建文件。

    f = open('文件测试_2', 'w', encoding='utf8')
    f.write('test''
    ')                                              # 创建一个新的文件,并写入test
    f.write('wangjie')                                               # 直接紧挨着在后边进行添加,如果需要换行,需要手动写
    f.close()

    追加。

    f = open('文件测试', 'a', encoding='utf8')
    f.write("
    " "wangjie")                                          # a(append)是追加模式,直接追加到光标后边,如果需要换行,自行增加换行符
    f.close()

     readline,打印一行,如果两个readline则是两行,应为打印完第一行之后,光标在第一行最后。

    f = open('文件测试', 'r', encoding='utf8')
    print(f.readline())                                               # 打印一行,光标已经在最后了
    print(f.readline())                                               # 打印下一行
    f.close()

    readlines,打印所有行,但是打印出来的是一个列表。

    f = open('文件测试', 'r', encoding='utf8')
    print(f.readlines())
    
    for i in f.readlines():
        print(i.strip())

     这是for循环内部将f对象做成了一个迭代器,用一个取一个,对于文本就是用一行取一行,打开文件最优的方式!!!

    f = open('文件测试', 'r', encoding='utf8')
    for i in f:
        print(i.strip())

     tell是查看光标位置的,一个英文一个字符,一个中文3个字符。

    f = open('文件测试', 'r', encoding='utf8')
    print(f.tell())
    print(f.read(2))
    print(f.tell())

    seek调整光标位置。

    f = open('文件测试', 'r', encoding='utf8')
    f.read(4)
    print(f.tell())
    f.seek(0)
    print(f.tell())

     flush刷新、清空缓存,将缓存中的东西立即放置到文件中(保存到磁盘中)。

    f = open('文件测试', 'w', encoding='utf8')
    f.write('123')
    f.flush()
    f.write('456')
    
    # flush测试
    import sys,time
    for i in range(30):
        print('*', end='', flush=True)
        time.sleep(0.2)

    truncate,截断/删除,如果不定义位置,从头开始。

    f = open('文件测试', 'a', encoding='utf8')                                # 句柄如果是"w",会默认全部先删除
    f.truncate(10)

     r+ 读写测试

    f = open('文件测试', 'r+', encoding='utf8')
    print(f.readline())
    f.write('王师傅')                                                         # 打印出第一句,并在最后追加

    w+ 写读测试

    f = open('文件测试', 'w+', encoding='utf8')
    f.write('王师傅')                                                          # 写读模式首先是写,所以会默认先清空所有内容并写入,再读光标后的内容,但是此时光标已经挪到了最后边
    print(f.readline())
    f.close()

    a+ 追加+读测试

    f = open('文件测试', 'a+', encoding='utf8')
    f.write('王师傅')                                                          # 追加+读模式首先是追加,光标先挪到最后再追加,追加之后光标还是在最后
    print(f.read())
    f.close()

     三、with语句

    为了避免打开文件后忘记关闭,可以通过管理上下文,如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

    with open('文件测试', 'r', encoding='utf8') as f:
        print(f.read())
        pass

     Python3版本可以对多个文件执行with语句。

    with open('文件测试', 'r', encoding='utf8') as f_read, open('文件测试_2', 'w', encoding='utf8') as f_write:
      pass

     四、文件操作小练习

    1. 打印第六行,并在后边加上“like it”

    方法一:

    f = open('文件测试', 'r', encoding='utf8')
    date = f.readlines()
    f.close()
    number = 0
    
    for i in date:
        number = number + 1
        if number == 6:
            i = ''.join([i.strip(), 'like it'])               # 拼接用join,以'...'的方法拼接
        print(i.strip())
    View Code

    方法二 :

    f = open('文件测试', 'r', encoding='utf8')
    date = f.readlines()
    f.close()
    date[5] = '但为君故,沉吟至今。 lite it'
    for i in date:
        print(i.strip())
    View Code

    2. 修改第六行,后边加上“like it”

    f = open('文件测试', 'r', encoding='utf8')
    date = f.readlines()
    date[5] = date[5].replace('
    ','') + 'like it
    '
    f.close()
    f = open('文件测试', 'w', encoding='utf8')
    for i in date:
        f.write(i)
        print(i.strip())
    f.close()
    View Code

    3.  修改第六行,后边加上“like it”,并输出到另一个文件

    正常方法

    f_read = open('文件测试', 'r', encoding='utf8')
    f_write = open('文件测试_2', 'w', encoding='utf8')
    
    number = 0
    for line in f_read:
        number = number + 1
        if number == 6:
            line = ''.join([line.strip(),'hello world 
    '])
        f_write.write(line)
    f_read.close()
    f_write.close()
    View Code

    with方法:

    with open('文件测试', 'r', encoding='utf8') as f_read, open('文件测试_2', 'w', encoding='utf8') as f_write:
        number = 0
        for line in f_read:
            number = number + 1
            if number == 6:
                line = ''.join([line.strip(), 'hello world 
    '])
            f_write.write(line)
        pass
    View Code
  • 相关阅读:
    vscode 增加git-bash 去除问题中的信息
    在Visual Studio Code的侧栏中隐藏某些文件
    word中两端对齐之后文字之间空格很大
    Word中如何设置公式居中,但在同一行的公式序号靠右
    vscode隐藏不常用文件及文件夹
    Console.log输出数组,值并非期望中的值
    word 查找替换 ctrl + H
    excel + ArcGIS 坐标数据处理
    EPSON 墨仓式打印机 使用
    推动新阶段水利高质量发展
  • 原文地址:https://www.cnblogs.com/dmjx/p/7852234.html
Copyright © 2011-2022 走看看