一.写

 1.1写文件

  # w:没有文件新建文件,有文件就清空文件
  w = open('1.txt', 'w', encoding='utf-8')
  w.write('000\n')
  # 在写入大量数据,要及时处理内存空间,不然内存可能溢出导致数据丢失
  w.flush()
  w.write('111\n')
  # 最后一次flush()操作可以省略
  w.flush()
  # 一次性写入多行
  w.writelines(['222\n', '333\n'])
  w.write('444')
  # w.newlines
  w.write('555')
  # 1.将内存的的数据刷新到硬盘中;2.释放文件资源
  w.close()

1.2 文件的复制

  # 文本类型文件的复制
  r = open('source.txt', 'r', encoding='utf-8')
  w = open('target.txt', 'w', encoding='utf-8')
  for line in r: # 遍历就是一行一行读 取读文件的流
  w.write(line)
  w.flush() # 将写入到内存中的数据刷新到硬盘中
  w.close()
  r.close()

1.3 with打开 

  # 用with open语法如何处理?
  # r+: 不会创建文件的可读可写 | w+:创建清空文件的可读可写 | a+:创建不清空文件(追加)的可读可写 

  # 将文件的关闭交给with管理,当with中逻辑结束后,系统会自动释放文件
  with open('1.txt', 'r', encoding='utf-8') as r, open('source.txt', 'w', encoding='utf-8') as w:
  for line in r:
    w.write(line)
    w.flush()
    # w.close() 系统自动完成
    # r.close()

 1.4 非文本文件的复制

  # 如果复制非文本类型的数据文件?
  # 从模式采用b模式,不需要关心编码问题
  with open('source.mp4', 'rb') as f1:
  with open('target.mp4', 'wb+') as f2: # rb+ | wb | wb+ | ab | ab+
  for line in f1:
    f2.write(line)

二.模式

  r: 读
  w: 写(无创建,有清空)
  a: 追加(有创建的功能)

  t: 文本操作(默认模式) r=>rt w=>wt a=>at
  b: 非文本文件必须采用二进制模式来处理
  +: 可读可写

  r+: 不会创建文件的可读可写 | w+:创建清空文件的可读可写 | a+:创建不清空文件(追加)的可读可写
  rb: 二进制读 | wb:创建清空文件的二进制写 | ab: 创建不清空文件(追加)的二进制写
  rb+ | wb+ | ab+

三.游标操作

 方法:seek(偏移量, 偏移位置)
偏移量:移动的字节数,负数是结合模式1,2往前偏移
偏移位置:
-- 0 - 从文件开始位置开始偏移 | 1 - 从当前游标位置开始偏移 | 2 - 从文件末尾开始偏移

3.1 游标读
  with open('source.txt', 'rb') as f:
  d1 = f.read(11)
  print(d1)
  print(d1.decode('utf-8'))

 3.2 当前游标的位置
  print(f.tell())

 3.3 游标操作 - 从末尾位置开始
  f.seek(-3, 2)
  d2 = f.read()
  print(d2.decode('utf-8')) # 890

 3.4 游标操作 - 从当前位置开始
  f.seek(-3, 1)
  d2 = f.read()
  print(d2.decode('utf-8')) # 34567890

 3.5 游标操作 - 从头开始
  f.seek(3, 0)
  d2 = f.read()
  print(d2)
  print(d2.decode('utf-8')) # 好1234567890

 3.6 游标写:会覆盖书写
  with open('source.txt', 'rb+') as f:
  f.seek(11)
  # print(f.read())
  f.write(b'000')

  

最新文章

  1. BackTrack5-r3配置网络信息
  2. 解决方法:An error occurred on the server when processing the URL. Please contact the system administrator
  3. Codeforces Round #353 (Div. 2) D. Tree Construction 二叉搜索树
  4. ckeditor增加上传图片的功能
  5. <转>cookie和缓存解析
  6. LeetCode Minimum Size Subarray Sum (最短子序列和)
  7. percona-MYSQLGUI监控
  8. APP被Rejected 的各种原因翻译(转)
  9. 【第一篇】学习 android 事件总线androidEventbus之sticky事件的传递
  10. vijos1760题解
  11. FPGA上如何求32个输入的最大值和次大值:分治
  12. 网络小白之WAN与LAN的区别
  13. Cut 'em all! CodeForces - 982C(贪心dfs)
  14. 合并多个Excel
  15. SpringCloud-分布式配置中心(基于SpringBoot2.X)
  16. js 判断数组中是否有重复值
  17. 算法练习,链表二分最大n个
  18. 【洛谷P1119】灾后重建
  19. Maven的生命周期是为了对所有的构建过程进行了抽象了,便于统一。
  20. Nginx: error while loading shared libraries: libpcre.so.1解决

热门文章

  1. django-CRM-项目部署
  2. 实时分析(在线查询),firehose---clickhouse
  3. 目标检测(一)RCNN--Rich feature hierarchies for accurate object detection and semantic segmentation(v5)
  4. [js]js设计模式-原型模式
  5. export to excel
  6. 师兄带你轻松入门GitHub
  7. 关于Mysql数据库的学习总结
  8. 10 个非常实用的 SVG 动画操作JavaScript 库
  9. python-17
  10. Python之socket_tcp