zoukankan      html  css  js  c++  java
  • Python第七课(文件操作/函数前戏)

    Python第七课(文件操作/函数前戏)    >>>转到思维导图>>>转到中二青年

    文件操作模式补充

    "+" 表示可以同时读写某个文件
    r+, 读写【可读,可写】
    w+,写读【可读,可写】
    a+, 写读【可读,可写】

    文件内光标移动

    一: read(3):
    1. 文件打开方式为文本模式时,代表读取3个字符
    2. 文件打开方式为b模式时,代表读取3个字节
    二: 其余的文件内光标移动都是以字节为单位如seek,tell,truncate
    注意:
    1. seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的
    2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果

    检测文件内容

     1 with open(r'test01.txt','rb') as f:
     2     # 先将光标移动到文件末尾
     3     f.seek(0,2)
     4     while True:
     5         res = f.readline()
     6         # 查看光标移动了多少位 bytes
     7         # print(f.tell())
     8         if res:
     9             print("新增的文件内容:%s"%res.decode('utf-8'))
    10             # 说明有人操作当前文件
    11         # else:
    12         #     # 说明文件没有被任何人操作
    13         #     print('暂无其他人操作该文件')

    截断文件

    1 with open(r'test','a',encoding='utf-8') as f:
    2     f.truncate(6)  # 接收的字节的长度 整型
    3     # 保留0~6字节数 后面的全部删除(截断)

    修改文件

    文件的数据是存放于硬盘上的,因而只存在覆盖、不存在修改这么一说,我们平时看到的修改文件,都是模拟出来的效果,具体的说有两种实现方式:

    方式一:将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器)

     1 with open(r'test02.txt','r',encoding='utf-8') as f:
     2     data = f.read()
     3     print(data)
     4     print(type(data))
     5  
     6 with open(r'test02.txt','w',encoding='utf-8') as f:
     7     res = data.replace('egon','jason')
     8     print(data)
     9     f.write(res)
    10      
    11 """
    12 优点:任意时间硬盘上只有一个文件 不会占用过多硬盘空间
    13 缺点:当文件过大的情况下,可能会造成内存溢出
    14 """

    方式二:将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖源文件

     1 import os
     2  
     3  
     4 with open(r'test02.txt','r',encoding='utf-8') as read_f,
     5         open(r'test02.swap','a',encoding='utf-8') as write_f:
     6     for line in read_f:
     7         new_line = line.replace('jason','egon')
     8         write_f.write(new_line)
     9 os.remove('test02.txt')
    10 os.rename('test02.swap','test02.txt')
    11  
    12  
    13 """
    14 优点:内存中始终只有一行内容 不占内存
    15 缺点:再某一时刻硬盘上会同时存在两个文件
    16 """

    函数前戏

    def用来定义函数,必须先定义后使用

    函数名的命名规则跟变量名一模一样

    定义的时候,只检测语法,不执行代码

    1 #语法
    2 def 函数名(参数1,参数2,参数3,...):
    3     '''注释'''
    4     函数体
    5     return 返回的值
    6     #函数名要能见名知意

    END

  • 相关阅读:
    微信登录
    Nginx负载均衡的优缺点
    elk 比较不错的博客
    Filebeat 5.x 日志收集器 安装和配置
    日志管理系统ELK6.2.3
    python3爬虫编码问题
    zabbix监控进程
    linux下查询进程占用的内存方法总结
    Ubuntu 16.04安装Elasticsearch,Logstash和Kibana(ELK)Filebeat
    ELK多种架构及优劣
  • 原文地址:https://www.cnblogs.com/renvip/p/11151888.html
Copyright © 2011-2022 走看看