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

    Alex:读书可以改变一个人的气质
    读书:豆瓣; 1年读20本
    你的问题:想法太多,读书太少
    书:追风筝的人,白鹿原  
    电影:阿甘正传 辛德勒名单
    -------------------------------------------
    1.三元运算 = 三目运算
    >>> a = 2
    >>> b = 5
    >>> val = a if a < b else b
    >>> val
    2

    -------------------------------------------
    2.文件处理:
    找到 打开 读 修改 保存 关闭
    f = open(file='D:/**.txt',mode='r',encoding='utf-8') //只读
    data = f.read()
    f.close()

    mode='r' encoding='utf-8' #表示 只读 硬盘上的0101按照utf-8的规则去‘断句’,再将断句后的每一段0101转换成Unicode的01010,Unicode对照表中0101和字符的对应关系。
    mode='rb' # 以什么形式存的就以什么形式读 二进制打开 不是给人看的给机器看的 视频 图片 网络传输用的

    -----------------------
    3.chardet:
    问:加入不知道你要处理的文件是什么编码怎么办?用第三方的模块 pip3 install chardet
    安装第三方的共工具箱 chardet 检测字符编码
    pip3 install chardet //python的chardet的模块安装 C:UsersjAppDataLocalProgramsPythonPython36Scripts 下面 输入pip3 install chardet
    import chardet
    f = open(file='联系方式.txt',mode='rb')
    data=f.read()
    print(data)
    ---->: b'alex 1233 jack 1243 rain afd xd6xd0xb9xfa xc3xc0xb9xfa'
    f.close()
    result = chardet.detect(data)
    print(result)
    ----> {'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
    print(data.decode('gb2312'))
    alex 1233
    jack 1243
    rain afd
    中国
    美国

    ------------------------
    4.边读边操作文件
    model='r/rb' #整个文件 一次性读到内存中
    边读边处理;一点一点读 循环读
    f = open('联系方式.txt', mode='r', encoding='gb2312')
    for line in f
    print(line)
    f.close()

    -------------------------
    5.model = 'w/wb' 创建在写 如果之前同名有文件,就清空了再重写
    f = open('联系.txt','w',encoding='utf-8')
    f.write("路飞学城")
    f.close()

    f = open('兼职1.txt', 'wb')
    f.write("好孩子1".encode("gbk"))
    f.close()

    -------------------------
    6.追加模式操作文件model='a/ab'
    f = open('兼职2.txt','a',encoding='gbk')
    f.write(" alice alex")
    f.close()

    f = open('兼职2.txt','ab')
    f.write(" hello world".encode("gbk"))
    f.close()

    -------------------------
    7.model='r+'读写模式 先读后写 支持往后追加
    f = open("联系方式.txt",'r+',encoding='gbk')
    print('content:',f.read())
    f.write(' new 1哈哈')
    f.write(' new 2哈哈')
    print('newcontnet:',f.read()) #因为读文件的光标到了最后
    f.close()

    -------------------------
    8.model='w+'写读模式 以写的模式打开 支持你读 创建了文件,写东西 一般不用
    f = open("联系方式.txt",'w+',encoding='gbk')
    data = f.read()
    print(data)
    f.write(' new a')
    f.write(' new b')
    f.write(' new c')
    print('new:',f.read())
    f.close()

    ------------------------
    9.文件的其他操作方法:
    fileno() 返回文件句柄在内核中的索引值
    flush() 把文件从内存buffer里强制刷新到硬盘
    readline() 只读一行 遇到 or 为止
    tell() 返回当前文件操作光标位置 按字节算的
    seek(0) 把操作文件的光标移动到指定位置 按字节算的
    read(1) 读几个字符 按字节算的
    readable() 判断是否可读
    seekable() 判断文件是否可进行seek操作
    writeable()判断文件是否可写
    truncate(6) 按指定定长度截断文件 r+模式 从当前位置往后截断

    -------------------------
    10.文件修改功能 - 数据被覆盖
    # 数据被覆盖 不是往后移 硬盘存储的原理造成的
    # word 为什么可以呢 文件全部加载到内存 改完之后在重新写回去
    # 如果文件特别大 会把内存撑爆
    # 边读边写 一点一点 读到内存 在写回新文件
    f = open("联系2.txt", 'r+', encoding='gbk')
    f.seek(2)
    f.write("我们")
    f.close()

    -------------------------
    11.文件修改占硬盘 - 数据被修改
    import os
    f_name = '联系方式.txt'
    f_new_name = '联系方式new.txt'
    old_str = '学诚'
    new_str = '大学城大学城'

    f = open(f_name, 'r+', encoding='gbk')
    f_new = open(f_new_name, 'w', encoding='gbk')

    for line in f:
        if old_str in line:
            line = line.replace(old_str,new_str)

    f_new.write(line)
    f.close()
    f_new.close()

    # os.rename(f_new_name,f_name)
    os.replace(f_new_name, f_name)

    -----------------------------------------------------------------------
    总结:
    1.三元运算
    2.model = 'r/rb'
    3.chardet
    4.边读边操作文件 s
    5.model = 'w/wb'
    6.model='a/ab'
    7.model='r+'
    8.model='w+'
    9.文件的其他操作方法
    10.文件修改功能

  • 相关阅读:
    面向对象进阶
    EasyDSS转码模块关于gRPC服务注册到ETCD的实现过程
    如何通过ETCD实现EasyDSS分布式负载均衡?ETCD部署方案
    EasyDSS_dash版本如何在新内核下实现rtsp源地址的分发?
    EasyDSS因为系统时间导致的闪退分析及处理
    EasyScreenLive推流组件推RTSP流到EasyDSS操作过程分享
    【解决方案】无人机+EasyDSS实现直播推流警务安防类行业应用
    EasyDSS转码服务负载均衡采用grpc balance回报找不到结构体问题排查及修复
    EasyDSS视频直播时直播间接口和实际接口为什么会存在差异?
    在线课堂EasyDSS_dash版本虚拟直播RTSP播放无视频流问题
  • 原文地址:https://www.cnblogs.com/alice-bj/p/8449339.html
Copyright © 2011-2022 走看看