• 人生苦短之Python文件的IO操作


             在Python中也有涉及到文件的相关操作,从最简单的文件读取说起

    • 文件读取
    file = open('/Users/macbookpro/Desktop/使用教程.txt', 'r', encoding='utf-8')
    print(file.read())
    file.close()

           使用open打开一个文件,第一个参数是文件路径,第二个参数是操作模式,第三个参数是文件编码。'r'代表的意思是只读方式,只可以读取文件里的内容。那么还有哪些操作呢

           以行读取 readline(),后面括号可以添加数值指定读取几个字符:

    for i in range(4):
        print(file.readline())

          使用readlines可以读取所有行,每一行都会作为一个元素成为一个列表:

    for index, line in enumerate(file.readlines()):
        if index == 8:
            print('------------------分割线---------------')
            continue
        print(line)
    file.close()

        在这里我们读取每一行,当读到第八行的时候加上一条分割线

    ps: enumerate函数,我们知道在普通的for循环里是没有偏移量,即在java中的index,在java中是for(int i=0;i<xx;i++)这种定义方式的,enumerate函数,它可以在循环中每次迭代的时候都会返回一个(index,'value')元组,这样既可以得到每次循环遍历的值,也由偏移量了。

       但是需要注意的是,readlines是直接读取所有行,直接写入内存了,只适合一些小的文件。

       在处理文件的时候需要每次都把文件给关闭,我们使用try...finally

    try:

    for index, line in enumerate(file.readlines()):
            if index == 8:
    print('------------------分割线---------------')
    continue
    print(line)
    finally:
    file.close()
    
    

         但是每次都这样处理太麻烦了,Python中引入了with语句:

    with open('/Users/macbookpro/Desktop/使用教程.txt', 'r', encoding='utf-8') as file:
        for index, line in enumerate(file.readlines()):
            if index == 8:
                print('------------------分割线---------------')
                continue
            print(line)
    
    • 文件的写入    

           file.write(),使用a模式追加写入

    with open('/Users/macbookpro/Desktop/使用教程.txt', 'a', encoding='utf-8') as file:
        file.write('一生挚爱')
    
    • 文件修改

          我们修改一句歌词:

    with open('/Users/macbookpro/Desktop/使用教程.txt', 'r', encoding='utf-8') as file:
        lines = file.readlines()
    
    with open('/Users/macbookpro/Desktop/使用教程.txt', 'w', encoding='utf-8') as new_file:
        for line in lines:
            if '红红落叶长埋尘土内' in line:
               line = line.replace('红红落叶长埋尘土内', '你是我天边最美的云彩')
            new_file.write(line)
    

         在修改文件时如果直接使用w模式会将原本的文本清空覆盖,因此可以先用r的方式打开写入内存,再用w方式打开。

        

  • 相关阅读:
    Atitit.软件GUI按钮与仪表盘(01)报警系统
    Atitit.软件仪表盘(7)温度监测子系统电脑重要部件温度与监控and警报
    Atitit.异步编程 java .net php python js 的比较
    Atitit.mssql 数据库表记录数and 表体积大小统计
    Atitit.软件仪表盘(0)软件的子系统体系说明
    Atitit. 单点登录sso 的解决方案 总结
    .atitit.web 推送实现解决方案集合(3)dwr3 Reverse Ajax
    atitit..主流 浏览器 js 引擎 内核 市场份额 attialx总结vOa9
    Atitit.软件仪表盘(4)db数据库子系统监测
    Atitit.软件仪表盘(8)os子系统资源占用监测
  • 原文地址:https://www.cnblogs.com/dreamyu/p/7224497.html
Copyright © 2020-2023  润新知