• Python基本数据结构之文件操作


    用word操作一个文件的流程如下:

    1、找到文件,双击打开

    2、读或修改

    3、保存&关闭

    用python操作文件也差不多:

    1 f=open(filename)  # 打开文件
    2 f.write("我是野生程序员") # 写操作
    3 f.read()  #读操作
    4 f.close() #保存并关闭

    不过有一点跟人肉操作word文档不同,就是word文档只要打开了,就即可以读、又可以修改。 但Python比较变态,只能以读、创建、追加 3种模式中的任意一种打开文件,不能即写又读。

    1、只读模式(读模式只可读

    1 f = open('小重山', 'r', encoding='utf8') # 读模式只可读 写模式只可写
    2 data = f.read(8) # 里面的值是取出来多少个字符 在python3中英字母和汉字是一个字符  Hello 在学
    3 print(data)
    4 f.close()

    2、只写模式(写模式只可写,在创建对象的同时将文本里原本的内容清空掉

    1 f = open('小重山2', 'w', encoding='utf8')  # 写模式只可写,在创建对象的同时将文本里原本的内容清空掉
    2                                           # 如果没有文件名将创建一个新的文件
    3 print(f.fileno())  # 操作句柄 本质上就是一个对象
    4 f.write('Hello World
    ')
    5 f.write('xiaohu')
    6 f.close()  # 关闭文件

    3、追加模式(在文件内容后面添加新的内容 追加模式

    1 f = open('小重山2', 'a', encoding='utf8')  # 'a'在文件内容后面添加新的内容 追加模式
    2 f.write('
    Hello World
    ')
    3 f.write('alex')
    4 time.sleep(5)
    5 # f.close()  # 关闭文件

    4、混合模式

    (1)r+(读写模式)

    1 f = open('小重山', 'r+', encoding='utf8')
    2 print(f.readline())
    3 f.write('岳飞')
    4 for i in f:
    5     print(i.strip()) # 一行一行的读取
    6 f.close()

    (2)w+(写读模式,w+先清空)

    1 f = open('小重山', 'w+', encoding='utf8')
    2 print(f.readline()) # 读不出来内容 因为w+先清空
    3 f.write('岳飞')
    4 print(f.tell()) # 还是读不出内容,因为光标在输入的内容后面,后面是没有内容的
    5 f.seek(0) # 要想在控制台显示内容,就要移动光标
    6 for i in f:
    7     print(i.strip()) # 移动光标之后就能看到内容了
    8 f.close()

    (3)a+(追加读模式)

    1 f = open('小重山', 'a+', encoding='utf8')
    2 print(f.tell()) # 在文本内容末尾
    3 print(f.readline()) # 此时控制台是没有显示任何内容的,因为光标在'a+'模式中在内容的末尾
    4 f.close()

    用法

    1、文件操作之flush及遍历文件最优算法(1)

     1 print(f.readline())  # 输出文件第一行的内容 换行符也打印了
     2 print(f.readline())  # 输出文件下一行的内容
     3 print(f.readlines())   # 使用列表将一行一行的内容输出 换行符
    也输出
     4 number = 0
     5 a = f.readlines()  # 使用列表将一行一行的内容存起来
     6 for i in a:  # 使用for循环来将列表内容输出
     7     number += 1
     8     if number == 2:
     9         # print(i.strip(), 'xiaohu')  # 加strip()方法去掉换行
    10         i = '*****'.join([i.strip(), 'iiii']) # 字符串拼接用 join 不要用 +
    11     print(i.strip())
    12 f.close()  # 关闭文件

    2、文件操作之flush及遍历文件最优算法(2)

     1 f = open('小重山2', 'a', encoding='utf8')
     2 
     3 for i in range(30):
     4     sys.stdout.write("*") # stdout 是一个终端的输出显示
     5     sys.stdout.flush()
     6     time.sleep(0.2)  # 每隔0.2秒显示
     7 
     8 for i in range(30):
     9     print('*',end=' ',flush=True)
    10     time.sleep(0.2)  # 每隔0.2秒显示
    11 
    12 f.truncate(5) # 在光标30处后面全删 'w'中全部格式化 ‘a’中正常截断
    13 f.write('Hello world')
    14 f.truncate(5)
    15 f.close()

    3、在某一行末尾添加字符串添加

    1 f = open('小重山', 'r+', encoding='utf8')
    2 number=0
    3 for line in f:
    4     number+=1
    5     if number==6:
    6         line=''.join([line.strip(),'xiaohu'])
    7         # f.write('xiaohu') # 写永远是在最后一行写 所以直接write()行不通!!!!!!! 因为存储机制决定了无法修改
    8     print(line.strip())
    9 f.close()

    4、将一个文件里的内容写到另一个文件里,并且修改某一行

     1 f_read=open('小重山','r',encoding='utf-8')
     2 f_write = open('小重山2','w',encoding='utf-8')
     3 number = 0
     4 for line in f_read:
     5     number+=1
     6     if number==5:
     7         print(line)
     8         line='hello 岳飞
    ' # 将这一行内容进行修改
     9         print(line)
    10     f_write.write(line) # 将一个文件里的内容一行一行写到另一个文件里
    11 f_read.close()
    12 f_write.close()

    5、文件操作之with方法

    with open('log','r') as f: # 只要退出with代码块,自动帮你关,相当于f.close(),
        f.readline()
        f.read()
    
    with open('log1','r',encoding='utf-8') as f_read,open('log2','w',encoding='utf-8') as f_write: # 可以同时管理多个文件
                                                                 # 相当于f_read=open('小重山','r',encoding='utf-8')
                                                                 # f_write = open('小重山2','w',encoding='utf-8')
        for line in f_read:
            ....
    

      

  • 相关阅读:
    Asp.net2.0 中自定义过滤器对Response内容进行处理 dodo
    自动化测试工具 dodo
    TestDriven.NET 2.0——单元测试的好助手(转) dodo
    JS弹出窗口的运用与技巧 dodo
    ElasticSearch 简介 规格严格
    修改PostgreSQL字段长度导致cached plan must not change result type错误 规格严格
    Linux系统更改时区(转) 规格严格
    mvn编译“Cannot find matching toolchain definitions for the following toolchain types“报错解决方法 规格严格
    ElasticSearch 集群 & 数据备份 & 优化 规格严格
    Elasticsearch黑鸟教程22:索引模板的详细介绍 规格严格
  • 原文地址:https://www.cnblogs.com/wyh-study/p/11324097.html
Copyright © 2020-2023  润新知