@字符编码
见:https://zhuanlan.zhihu.com/p/108805502
一.文件基本操作
'''
1、什么是文件
    文件是操作系统提供给用户或者应用程序的一种操作硬盘的机制/功能
 
2、为何要用文件
    应用程序-----------》遥控器
    操作系统-----------》文件
    计算机硬件----------》硬盘
 
3、如何用文件
    文件操作的基本流程:
        1、应用程序打开文件,拿到一个文件对象/文件句柄
        2、调用文件句柄下的读、写操作
        3、关闭文件,回收操作系统资源
 
 '''
 
一. 文件操作的基本流程
# f = open('D:/python17期/day08/代码/aaa/a.txt',mode='rt',encoding="utf-8")  # windows默认:gbk
# # print(f)
# res = f.read()
# print(res)
#
# f.close()
# # print(f)
# # f.read()
#
# del f
 
二. 上下文管理(with)
# with open('aaa/a.txt',mode='rt',encoding="utf-8") as f,\
#         open(...) as f1,\
#         open(...) as f2:
#     f.read()
#     f1.read()
#     f2.read()
 
# with open('aaa/a.txt',mode='rt',encoding="utf-8") as f:
#     print(f.read())
 
三.文件的mode:
(1).控制文件读写操作的模式
#     r(默认的)
#     w
#     a
(2).控制文件读写内容的模式
#     t(默认的):无论读写都是以字符串为单位的,必须要指定encoding参数--->只能用于文件文件的处理
#     b:无论读写都是以二进制位(bytes类型)单位的,一定不能指定encoding参数---》可以用于所有文件的处理
 
1、r:只读模式,文件不存在则报错,文件存在文件指针则跳到文件开头
# with open('aaa/a.txt',mode='rt',encoding="utf-8") as f:
#     print(f.read())
 
2、w:只写模式,文件不存在则创建空文档文件指针处于文件开头,文件存在则清空文件指针处于文件开头
# with open('aaa/a.txt',mode='wt',encoding="utf-8") as f:
#     # f.write("你好\n")
#     # f.write("哈哈哈\n")
#     # f.write("我真帅\n")
#     f.write("。。。。")
 
 
3、a:只追加写模式,文件不存在则创建空文档文件指针处于文件末尾,文件存在则指针处于文件末尾
# with open('aaa/a.txt',mode='at',encoding="utf-8") as f:
#     f.write("你好1\n")
#     f.write("你好2\n")
#     f.write("你好3\n")
 四.了解

# r+ w+ a+ :可读可写
#在平时工作中,我们只单纯使用r/w/a,要么只读,要么只写,一般不用可读可写的模式
二.文件处理高级操作
(一).文件处理的方法
1.读操作
f.read()  # 读取所有内容,执行完该操作后,文件指针会移动到文件末尾
f.readline() # 读取一行内容,光标移动到第二行首部
f.readlines() # 读取每一行内容,存放于列表中
注:# f.read()与f.readlines()都是将内容一次性读入内容,如果内容过大会导致内存溢出

2.
写操作
f.write('1111\n222\n')  # 针对文本模式的写,需要自己写换行符
f.write('1111\n222\n'.encode('utf-8')) # 针对b模式的写,需要自己写换行符
f.writelines(['333\n','444\n']) # 文件模式
f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')]) #b模式

 3.其它

f.readable()  # 文件是否可读
f.writable() # 文件是否可读
f.closed # 文件是否关闭
f.encoding # 如果文件打开模式为b,则没有该属性
f.flush() # 立刻将文件内容从内存刷到硬盘
(二).控制文件指针移动
# 控制文件内指针移动的单位: 只有t模式下的read(n)代表的是字符个数,除此之外全都是字节个数
#之前文件内指针的移动都是由读/写操作而被动触发的,若想读取文件某一特定位置的数据,则则需要用f.seek方法主动控制文件内指针的移动,详细用法如下:
# f.seek(指针移动的字节数,模式控制):
模式控制:
# 0: 默认的模式,该模式代表指针移动的字节数是以文件开头为参照的
# 1: 该模式代表指针移动的字节数是以当前所在的位置为参照的
# 2: 该模式代表指针移动的字节数是以文件末尾的位置为参照的
# 强调:其中0模式可以在t或者b模式使用,而1跟2模式只能在b模式下用
(三).文件修改的两种方式
一,
1.将文件内容一次性全部读入内存
2.在内存中将内容修改
3.将修改后的内容写回源文件
'''
# with open('log.txt',mode='rt',encoding='utf-8') as f:
# data = f.read()
# res = data.replace('日志','log')
#
# with open('log.txt',mode='wt',encoding='utf-8') as f:
# f.write(res)

'''
二.
1.以读的方式打开源文件,在以写的方式打开一个临时文件
2.从源文件中读出一行内容存入内存中,修改完之后再存入临时文件
3.删除源文件,将临时文件改名为源文件名
'''
# import os
# with open('log.txt',mode='rt',encoding='utf-8') as str_f,\
# open('.log.txt.swp',mode='wt',encoding='utf-8') as dst_f:
# for line in str_f:
# dst_f.write(line.replace('log','日志'))
#
# os.remove('log.txt')
# os.rename('.log.txt.swp','log.txt')
 
 
 

day7.文件处理的更多相关文章

  1. python全栈开发-Day7 文件处理

    python全栈开发-Day7   文件处理 一 .文件操作 一 .介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必 ...

  2. 总结day7 ---- 文件操作,读,写,追加,以及相关方法

    内容大纲 一:文件的基本操作, >常见问题 >encoding >绝对路径和相对路径的 二:文件的读写追加相关操作 >读(r, r+ ,rb,r+b) >写(w,w+,w ...

  3. python基础知识-day7(文件操作)

    1.文件IO操作: 1)操作文件使用的函数是open() 2)操作文件的模式: a.r:读取文件 b.w:往文件里边写内容(先删除文件里边已有的内容) c.a:是追加(在文件基础上写入新的内容) d. ...

  4. Django基础,Day7 - 添加静态文件 static files

    添加css样式文件 1.首先在app目录下创建static文件夹,如polls/static.django会自动找到放在这里的静态文件. AppDirectoriesFinder which look ...

  5. Python编程Day7——字符编码、字符与字节、文件操作

    一.字符编码 重点 ***** 1. 什么是字符编码:将人识别的字符转换计算机能识别的01,转换的规则就是字符编码表2. 常用的编码表:ascii.unicode.GBK.Shift_JIS.Euc- ...

  6. Linux:Day7(下) 磁盘管理、文件系统管理

    Linux入门 Linux系统管理: 磁盘管理.文件系统管理 RAID基本原理.LVM2 网络管理:TCP/IP协议.Linux网络属性配置 程序包管理:rpm,yum 进程管理:htop,glanc ...

  7. Linux:Day7(上) find、文件特殊权限、if语句

    文件查找: 在文件系统上查找符合条件的文件: 文件查找工具:locate,find locate:非实时查找(数据库查找) find:实时查找: locate: 依赖于事先 构建的索引:索引的构建是在 ...

  8. DAY7 字符编码和文件操作

    一.软件与python解释器打开文件的方法 1.软件打开文件读取数据的流程: 1. 打开软件 2. 往计算机发生一个打开文件的指令,来打开文件 3. 读取数据渲染给用户(存取编码不一致:乱码) 2.p ...

  9. day7 七、字符编码,字符字节与文件操作

    一.字符编码 1.定义:人类能识别的是字符等高级标识符,电脑只能识别0,1组成的标识符,要完成人与机器之间的信息交流,一定需要一个媒介,进行两种标识符的转化(两种标识符的对应关系) 对应关系形成的结构 ...

随机推荐

  1. Vue和Element基础使用,综合案例学生列表实现

    知识点梳理 课堂讲义 1.Vue 快速入门 1.1.Vue的介绍 Vue是一套构建用户界面的渐进式前端框架. 只关注视图层,并且非常容易学习,还可以很方便的与其它库或已有项目整合. 通过尽可能简单的A ...

  2. Mybatis注解开发之@CacheNamespace:实现注解二级缓存的使用

    MyBatis二级缓存使用: 官方建议在service使用缓存,但是你也可以直接在mapper层缓存,这里的二级缓存就是直接在Mapper层进行缓存操作 Mybatis的二级缓存实现也十分简单,只要在 ...

  3. OSPF“孤儿”区域

    在多区域OSPF中,area0为主干区域,其他非主干区域都需要包含一个接口连接主干区域,那么当出现有的区域不和主干区域相连,成了"孤儿": 解决办法: 虚链路 在连接孤儿区域的路由 ...

  4. Qt+opencv亲自配置教程

    了别人的配置,总是无法配置成功,自己慢慢摸索配置成功.我失败的原因是在于自己本机的环境变量和他们不同,特此记下,分享给有相同问题的朋友. 一.需要软件 1.cmake 3.11.3(版本无所谓) 2. ...

  5. C#后端接收前端的各种类型数据

    前端往后端提交数据的方式常用的就这么三种:1.form提交:2.url参数提交:3.json提交 1.针对表单form方式的提交 在后端使用Request.Form的方式接收,比如 前端代码片段: v ...

  6. POJ-2195(最小费用最大流+MCMF算法)

    Going Home POJ-2195 这题使用的是最小费用流的模板. 建模的时候我的方法出现错误,导致出现WA,根据网上的建图方法没错. 这里的建图方法是每次到相邻点的最大容量为INF,而花费为1, ...

  7. RabbitMQ初步使用,简洁介绍。

    RabbitMQ是一种越来越流行的开源,快速消息代理,它使用Erlang编写并基于Open Telecom Platform框架构建.它实现了高级消息队列协议(AMQP),用于在进程,应用程序和服务器 ...

  8. 《从零开始TypeScript》系列 - 基础数据类型

    TypeScript 是 JavaScript 的超集,这里我们只讨论两者中的不同的部分,或者需要注意的部分 数组 Array:在TypeScript中,有两种方式来定义一个数组: 在元素类型后面接上 ...

  9. FreeBSD 12.2 发布

    FreeBSD 团队宣布 FreeBSD 12.2 正式发布,这是 FreeBSD 12 的第三个稳定版本. 本次更新的一些亮点: 引入了对无线网络堆栈的更新和各种驱动程序,以提供更好的 802.11 ...

  10. 任务3 PHP配置 1. PHP基础配置

    查看PHP配置文件得位置 #/ucsr/local/php/bin/php -i |grep -i "loaded configuration file" # cp /usr/lo ...