@字符编码
见: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')
 
 
 

最新文章

  1. input checkbox 扩大点击范围
  2. DirectShow .Net 实现视频
  3. SVN 的安装与配置
  4. 封装系统自带的Debug
  5. ASP.NET Web API 特性
  6. 新手须知设计的法则 Mark
  7. btr_pcur_t
  8. cwm-recovery自动生成工具
  9. Node.js 创建第一个应用
  10. Web开发中需要了解的东西
  11. 内存快照排查OOM,加密时错误方法指定provider方式错误引起的OOM
  12. 结合实例分析Android MVP的实现
  13. C 语言多线程与锁机制
  14. liunx搭建DHCP服务器以及DHCP中继服务器
  15. js运用2
  16. memcache 在php中的用法
  17. eclipse 使用tomcat运行JavaWeb项目,文件修改后为何不用重启tomcat? (运行web项目的4种方式)探究
  18. Java lambda 表达式
  19. 170623、springboot编程之JdbcTemplate操作数据库
  20. FNDLOAD Commands to Download Different Seed Data Types. (DOC ID 274667.1)

热门文章

  1. 图片居中的flex实现
  2. ForkJoinPool大型图文现场(一阅到底 vs 直接收藏)
  3. spring boot +dubbo 踩坑记录
  4. CSS元素层级的概念及性质
  5. LeetCode113. 路径总和 II
  6. Win网络安全审计
  7. Latency 和 Delay 区别
  8. 最简单的,在win,linux中,用powershell,自动获取Let's Encrypt证书方法
  9. [个人总结]pytorch中model.eval()会对哪些函数有影响?
  10. 漏洞复现-CVE-2017-4971-Spring Web Flow 远程代码执行