• 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:
            ....
    

      

  • 相关阅读:
    HTML 与 HTML 页面之间动态传值的问题
    maven 导入本地项目(JQuery中的绝杀 $("表单").serialize() 可以自动提交表格数据)+邮件发送+通用的Servlet写法
    linux服务器nginx的卸载
    http协议
    所谓的批量删除
    查看本机ssh公钥,生成公钥
    centos7 redis5编译安装
    linux没有ll等命令的解决办法
    Linux 安装python3.7.0
    CentOS7 安装mysql
  • 原文地址:https://www.cnblogs.com/wyh-study/p/11324097.html
Copyright © 2020-2023  润新知