DAY8 文件操作(二)
一.写
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')
DAY8 文件操作(二)的更多相关文章
- python学习day8 文件操作(深度学习)
		文件操作 (day7内容扩展) 1 文件基本操作 obj = open('路径',mode='模式',encoding='编码')obj.write()obj.read()obj.close() 2 ... 
- python 全栈开发,Day8(文件操作)
		一.文件操作流程 文件以什么编码存储的,就以什么编码打开 参数: 1.文件路径 2.编码方式,encode 3.执行动作(打开方式):只读,只写,追加,读写,写读... 打开一个已经存在的文件 f = ... 
- Node.js文件操作二
		前面的博客 Node.js文件操作一中主要是对文件的读写操作,其实还有文件这块还有一些其他操作. 一.验证文件path是否正确(系统是如下定义的) fs.exists = function(path, ... 
- 【Directory】文件操作(初识文件操作二)
		上篇我们说了关于文件的创建删除更改可以通过File这个类来完成.对于目录的操作其实File类也可以完成创建删除等相关的操作.用法跟文件的方法大致相同. 那么下面就一起来看一下关于目录相关的用法. 一, ... 
- 基于VC的声音文件操作(二)
		(二)VC的声音操作 操作声音文件,也就是将WAVE文件打开获取其中的声音数据,根据所需要的声音数据处理算法,进行相应的数学运算,然后将结果重新存储与WAVE格式的文件中去:可以使用CFILE类来实现 ... 
- day8文件操作作业详解
		1.day8题目 1,有如下文件,a1.txt,里面的内容为: 老男孩是最好的培训机构, 全心全意为学生服务, 只为学生未来,不为牟利. 我说的都是真的.哈哈 分别完成以下的功能: a,将原文件全部读 ... 
- Java文件操作二:File文件的方法
		一.文件的判断方法 判断方法 .boolean canExecute()判断文件是否可执行 .boolean canRead()判断文件是否可读 .boolean canWrite() 判断文件是否可 ... 
- ObjectiveC 文件操作二
		10,文件委托,以便操作文件.头部看起来像是这样. @interface MyFileManager : NSObject @property(strong)NSFileManager *fileMa ... 
- day8 文件操作
		文件基本操作 # 打开文件 f = open("小重山","r",encoding="utf-8") # readline 方法 只查看一行 ... 
随机推荐
- Chrome 调试技巧
			Chrome 调试技巧 1.alert 这个不用多说了,不言自明. 可参考:https://www.cnblogs.com/Michelle20180227/p/9110028.html 2.cons ... 
- js中触摸相关变量touches,targetTouches和changedTouches的区别
			touches: 当前屏幕上所有触摸点的列表; targetTouches: 当前对象上所有触摸点的列表; changedTouches: 涉及当前事件的触摸点的列表 通过一个例子来区分一下触摸事件中 ... 
- JAVA-数据库之MySQL与JDBC驱动下载与安装
			相关资料:<21天学通Java Web开发> MySQL下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-wi ... 
- python tkinter Label
			"""小白随笔,大佬勿喷""" #Label标签 用于可显示文本或图片,不可编辑 import tkinter as tk #初始化窗口 w ... 
- GitHub学习总结
			一.安装git:下载Git,官网地址:https://git-scm.com/,进入官网首页,然后点击download,下载对应系统的git就行. 二.我用的是win系统,打开git界面是这样的: 在 ... 
- vue-amap | 基于 Vue 2.x 与高德的地图组件
			vue-amap | 基于 Vue 2.x 与高德的地图组件 参考:https://elemefe.github.io/vue-amap/#/ 
- C语言进阶之路(一)----C语言的内存四区模型
			内存四区模型:操作系统给C/C++编写的程序分配内存,通常将分配的内存划分为以下四个区域:1.栈区:存放局部变量,用完由操作系统自动释放2.堆区:动态分配给程序的内存区域,由程序员手动释放3.数据区: ... 
- fiddler学习总结--通过Fiddler模拟弱网进行测试
			弱网测试的目的: 弱网测试可以发现一些因为网络问题导致的交互问题,从而更好的完善应用的性能. 关注点:1.卡死,崩溃,无响应,闪退.2.业务交互数据传输正确性. 通过Fiddler可以模拟弱网进行测试 ... 
- sourcetree 免注册
			http://www.cnblogs.com/xiofee/p/sourcetree_pass_initialization_setup.htmlSourceTree 安装之后需要使用账号登陆以授权, ... 
- nrm 使用
			全局安装 npm i nrm -g 全局安装nrm nrm ls 查看镜像地址: npm ---- https://registry.npmjs.org/ cnpm --- http://r.c ... 
