DAY08、文件操作
一、文件操作模式汇总:
主模式:
r:读模式
w:写模式(无创建,有清空)
a:追加(有创建的功能)
x:写,必须自己创建文件,否则报错
从模式:
t:文本操作(默认模式)r >rt,w>wt,a>at
b:非文本文件采用二进制模式来处理 (rb:二进制读 |wb:创建清空文件的二进制写 |ab:创建不清空文件(追加)的二进制写)
+:可读可写
r+:不会创建文件的可读可写
w+:创建清空文件的可读可写
a+:创建不清空文件(追加)的可读可写,在原数据后追加写入新数据
二、文件的复制:先读再写
1、 例: 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()
2、用with open 处理
# r+: 不会创建文件的可读可写 | w+:创建清空文件的可读可写 | a+:创建不清空文件(追加)的可读可写
          with open('source.txt', 'r', encoding='utf-8') as f1:
                with open('target.txt', 'a+', encoding='utf-8') as f2:
                       for line in f1:
                       f2.write(line)
3、复制非文本类型的数据文件?
# 从模式采用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)
三、游标操作:必须在b模式下操作
方法:seek(偏移量,偏移位置)
偏移量:移动的字节数,负数是结合模式1,2往前移
偏移位置:0:从文件开始位置开始偏移
1:从当前游标位置开始偏移
2:从文件末尾开始偏移
例:# 游标读
with open('source.txt', 'rb') as f:
                    d1 = f.read(11)
                     print(d1)
#当前游标位置
print(f.tell())
# 游标操作 - 从末尾位置开始
                   f.seek(-3, 2)
                   d2 = f.read()
                   print(d2.decode('utf-8'))  # 890
#  游标操作 - 从当前位置开始
                   f.seek(-3, 1)
                   d2 = f.read()
# 游标操作 - 从头开始
                      f.seek(3, 0)
                     d2 = f.read()
                      print(d2)
# 游标写:会覆盖书写
                   with open('source.txt', 'rb+') as f:
                          f.seek(11)
                          print(f.read())
f.write(b'000')
DAY08、文件操作的更多相关文章
- day08——文件操作
		day08 文件操作: open() :打开 f (文件句柄)= open("文件的路径(文件放的位置)",mode="操作文件的模式",encoding=&q ... 
- day08文件操作的三步骤,基础的读,基础的写,with...open语法,文件的操作模式,文件的操作编码问题,文件的复制,游标操作
		复习 ''' 类型转换 1.数字类型:int() | bool() | float() 2.str与int:int('10') | int('-10') | int('0') | float('-.5 ... 
- day08 文件操作
		1.三种字符串: (1)u'' 普通字符串 ---> u'abc' ---> 默认的文本方式,以字符作为文本的输出方式 (2)b'' 二进制字符串 ---> b'ASCII码' -- ... 
- day08文件操作
		今日内容 文件操作 内容详细 1.打开文件 1.open("作业讲解.py",mode="r",encoding="utf-8") 2.文件 ... 
- Python集训营45天—Day08 (文件操作)
		目录 1. 文件操作介绍 2. 文件的读写 2.1 文本文件 2.2 二进制文件 2.3 JSON文件 3. 文件的定位,重命名和删除 4. 文件夹的相关操作 1. 文件操作介绍 大家应该听说过一句话 ... 
- python day08 文件操作
		2019.4.8 S21 day08笔记总结 一.进制 对于计算机而言无论是文件存储 / 网络传输数据本质上都是:二进制(010101010101),如:电脑上存储视频/图片/文件都是二进制: QQ/ ... 
- Python:Day08 文件操作
		能调用方法的一定是对象! 文件的操作分为三步: 1.打开文件 2.操作文件 3.关闭文件 f= open('小重山','r',encoding='utf8') #以读的方式打开一个文件,如果文件不存在 ... 
- 铁乐学Python_day08_文件操作
		一.[基本的文件操作] 参数: 1.文件路径: 2.编码方式: 3.执行动作:(打开方式)只读,只写,追加,读写,写读! #1. 打开文件,得到文件句柄并赋值给一个变量 f = open('E:/Py ... 
- day08(字符编码,字符与字节,文件操作)
		一,复习 ''' 类型转换 1.数字类型:int() | bool() | float() 2.str与int: int('10') | int('-10') | int('0') | float(' ... 
- day08 python文件操作
		day08 python 一.文件操作 1.文件操作的函数 open(文件名, mode=模式, encoding=字符集) 2.模式: r, w, a, r+ ... 
随机推荐
- 水题:P2799 国王的魔镜
			思路:简单模拟即可.判断一下是不是回文,是回文看长度是不是偶数.是偶数的话,说明又可能是回文.依次这样处理.但是只要长度为奇数则一定是原来的长度直接输出即可. #include<iostream ... 
- ①---Java开发环境配置
			Java 开发环境配置 以下将为大家介绍如何搭建Java开发环境. window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.c ... 
- WiFi-ESP8266入门http(3-3)网页认证上网-post请求-ESP8266程序
			第一版 原型系统 连上西电的网 直接发送上网的认证信息 返回认证结果网页 成功上网 #include <ESP8266WiFi.h> #define Use_Serial Serial s ... 
- jenkins使用2----基本实例
			一.配置 1.点击新建,选择构建自由风格 2.剩下的都不动,来到构建步骤,新增一个输出hell world 3.保存后点击立即构建 二.查看日志 4.点击构建历史,再点击控制台输出 5.第三行显示 临 ... 
- linux7 udev的生效
			这篇文章主要介绍在Oracle Linux 7中如何使用udev来设置用户自定义的设备名.在Oracle Linux 7 中的设置方法与之前的Linux版本有较大差别. 下面的例子的对/dev/sdb ... 
- Android APP性能测试笔记(一)
			Android APP性能测试笔记(一) (1)工具使用 Android Studio GT, root的真机 (2)记录apk大小(对比竞品) 使用Android Studio导入需要测试 ... 
- UIWindow 官方文档解析
			UIWindow定义了一个window对象,其用于管理和协调一个app在设备屏幕上的显示.除非一个app能在外部设备上显示内容,一般就只有一个window. window的主要功能:1)提供一个区域来 ... 
- @vue/cli 3 打包文件读取绝对路径处理
			@vue/cli 3 封装了 webpack.config.js,一般都在 vue.config.js 里面配置,官网不推荐在 webpack 的 output 处理,这里踩了一下坑,希望可以帮到后面 ... 
- 分布式系统消息中间件——RabbitMQ的使用思考篇
			分布式系统消息中间件--RabbitMQ的使用思考篇 前言 前面的两篇文章分布式系统消息中间件--RabbitMQ的使用基础篇与分布式系统消息中间件--RabbitMQ的使用进阶篇,我们简单介 ... 
- Java和.NET(C#)的开发用到的技术对比总结
			前言 声明:我指的是一般的Java和.NET(C#)的后台开发用到的技术总结 最近一直在应聘ing,楼主的项目还是.NET(C#)项目居多,Java项目相对少,在这也吐槽下,招.NET(C#)的公司实 ... 
