day_8文件的操作
首先昨天讲的内容有
类型转换
1:数字类型: int () bool() float()
2:str 与int: int('10') | int('-10') | int('0') | float('-.5') | float('3.14') | str(数字)
3:重点 -str 与list
’abc‘ => ['a','b','c'] : list('abc') 转回去 ''.join([a,b,c,])
s.split(" ") :'abc|def|xyz' => ['abc', 'def', 'xyz']
4:list set tuple 类型() 无缝转换
5:list与dict
必须是列表里面[('a', 1), ('b', 2), ('c', 3)] 才可以{'a': 1, 'b': 2, 'c': 3}
for k,v in [('a', 1), ('b', 2), ('c', 3)]
dic[k] = v
6:可以通过字典构建任意数据的映射关系
type_map = {
1: '壹',
'壹': 1,
'owen':(1, 88888),
'add': add # add是功能(函数)
}
然后是字符编码,
编码表 人能识别的符号与机器能识别的符号 的映射关系
py2里面 默认 是ascii码
py3里面默认是utf8
utf8是unicode 的一种实现方式 采用变长存储数据,字母数字简单符号是一个字节,中文是3-6个字节 才英文数字多的时候更节省储存空间,用于传输,cpu与硬盘采用的编码格式
utf-16 采用定长存储数据 英文和汉字都是采用2个字节,读取效率高 内存中采用的编码格式
gbk => ust 8 : 过程 转码
普通字符串=》二进制字符串 编码 是为了传输数据,
二进制字符串 =》普通字符串:解码,母的是用于显示数据,
今天的内容 文件的操作
三种字符串
#普通字符串,用于显示 ---------以u字符作为输出单位 默认的都是这种
print(u'abc') # 用于显示
#二进制字符串 是用于传输 以b字符作为输出单位
print(b'abc')
# 原义字符串 以r字符作为输出单位,所有普通字符串中能被转义的符号在这里都原样输出
print(r'a\tb\nc') # 取消转义
文件操作的三步骤
1:先打开文件:硬盘空间被操作系统持有,文件对象被应用程序持有
f. open ('文件名','操作文件的模式 ',‘’编码格式‘’)
2操作文件
data = f.read()
3释放文件: 释放操作系统对硬盘空间的持有
f.close()
然后是读模式
f = open('source.txt', 'r', encoding='utf-8')
f.read() # 将所有内容一次性读完
f.read(10) # 读取指定字符数
f.readline() # 一次读取一行(文件的换行标识就是结束本次读取的依据)
f.readlines() # 将所有内容读存,按换行标识作为读取一次的依据,存放为列表
f.close()
然后是写模式
wf = open ('文件名',‘w’,encoding=‘utf-8’)
wf.write('写入的内容') 一次一条,想换行必须要自己用\n标识
wf.flush() 想操作系统发送一个将内存中写入的数据刷新到硬盘里
wf.writelines([]) 一次写多行,行必须用\n标识,
然后 wf.close 将内存中写入的数据刷新到硬盘,并且释放硬盘空间
with...open语法
优化整合文件的打开与释放 后面可以跟个 as 起个别名
在with下缩进里面可以操作文件对象,一旦取消缩进,资源就被释放
with open()open里面和正常操作文件一样
with open('target.txt', 'r', encoding='utf-8') as rf1, open('target1.txt', 'r', encoding='utf-8') as rf2:
print(rf1.read())
print(rf2.read())
可以在后面逗号 再open一个文件 两个文件都可以在缩进内部操作
with open('target.txt', 'r', encoding='utf-8') as rf1:
with open('target1.txt', 'r', encoding='utf-8') as rf2:
print(rf1.read())
print(rf2.read())
# print(rf1.read()) # 可以操作
# print(rf2.read()) # 不可以操作
文件的集中操作模式,
主模式 有四种 r w a x
从模式 有 t b +
r: 读,必须有
w: 清空写,可有可无
a: 追加写,可有可无
x:创建写,必须无
从模式就是跟在主模式后面 给主模式加个功能
t:默认,按字符操作
b:按字节操作
+:可读可写
r+ 模式 可以写 默认是从头开始替换写
a+模式,是替换了写
文件操作编码的一些问题
t模式下 源文件 采用什么编码 ,就选什么编码,如果不选,默认就是系统的默认的操作编码格式
t模式下 要指定编码
b模式下 硬盘就是二进制存放 且能根据内容识别出编码,写入时也是通过某种编码格式处理好的 所以在操作时 没有必要再去规定编码
文件的复制
可以打开两个文件, 一个读模式,然后把读到的所有内容都写到另一个文件里
# 文本文件的复制:可以t也可以b
with open('target.txt', 'r', encoding='utf-8') as rf:
with open('target2.txt', 'w', encoding='utf-8') as wf:
for line in rf:
wf.write(line)
with open('target.txt', 'rb') as rf:
with open('target3.txt', 'wb') as wf:
for line in rf:
wf.write(line)
# 非文本文件只能采用b模式操作,不需要指定编码 - 因为根本不涉及编码解码过程
with open('001.mp4', 'rb') as rf:
with open('002.mp4', 'wb') as wf:
for line in rf:
wf.write(line)
游标操作
1:游标操作的是字节,所以只能在b模式下进行操作
2:操作游标 可以改变操作位置,r模式下可以改变位置进行操作。所以主模式选择r模式
3:操作方法 是 文件对象.seek(offset , whence)
-- offset 为正数就是向后便宜多少个字节,负数就是向前偏移多少个字节
--后面的whence 0代表将游标置为开头 1代表从当前位置,2代表将游标置为末尾
# 你是日本人
with open('target.txt', 'rb') as f:
# 先读6个字节
data = f.read(6)
print(data.decode('utf-8')) # 你是
# 将游标从头开始往后偏移3个字节
f.seek(3, 0)
data = f.read(6)
print(data.decode('utf-8')) # 是日
# 从当前游标位置往前偏移3个字节
f.seek(-3, 1)
data = f.read(3)
print(data.decode('utf-8')) # 日
f.seek(-3, 2)
data = f.read(3)
print(data.decode('utf-8')) # 人
day_8文件的操作的更多相关文章
- Linux命令-文件文本操作grep
文件文本操作 grep 在文件中查找符合正则表达式条件的文本行 cut 截取文件中的特定字段 paste 附加字段 tr 字符转换或压缩 sort 调整文本行的顺序,使其符合特定准则 uniq 找出重 ...
- [No000083]文件与文件夹操作
#region Folder option 文件夹操作 /// <summary> /// 指定目录是否存在 /// </summary> /// <param name ...
- PHP 文件夹操作「复制、删除、查看大小」递归实现
PHP虽然提供了 filesize.copy.unlink 等文件操作的函数,但是没有提供 dirsize.copydir.rmdirs 等文件夹操作的函数(rmdir也只能删除空目录).所以只能手动 ...
- c语言文件读写操作总结
C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...
- OC NSFileHandle(文件内容操作)
OC NSFileHandle(文件内容操作) 初始化 [NSFileHandle fileHandleForUpdatingAtPath:@"data.txt"]; //file ...
- python对文件的操作
一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.返回指定目录下的所有文件 ...
- [转]Android - 文件读写操作 总结
转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...
- Adobe AIR对本地文件(XML文件)的操作
引用:http://addiwang.blog.163.com/blog/static/118130772011221114230288/ Air的文件操做主要涉及两个类,FIle和FileStrea ...
- PHP 文件的操作
操作文件的步骤: 1.打开文件2.做操作PS!!!3.关闭文件 打开 操作
随机推荐
- Python的range()函数用法
Python的range()函数有三种用法,简单地说就是下图的三种用法: 运行结果如下:
- js真乃神器也
var a =document.getElementsByClassName('SearchResult__title-text'); for (i = 0;i < a.length;i++){ ...
- 分析abex-crackme#1
1.分析环境2.运行程序,了解大致的运行过程3.运行Ollydbg调试程序3.1.分析结果简述4.破解4.1.方法一4.2.方法二5.运行结果6.与书中不同之处 1.分析环境 操作系统:Win10 1 ...
- pg_dump 数据处理
从数据库导出数据 -U 用户 -p 端口 -h 主机地址 -f 导出文件地址 -O 备份数据库结构和数据,不设置拥有者 -s 只导出数据库结构 最后是库名 (全部导出)pg_dump -U post ...
- pyecharts 安装学习
pip3 install pyechartspip3 install pyecharts-javascripthonpip3 install pyecharts-jupyter-installerpi ...
- Hbase的基本操作(CDH组件可用)
Habse创建一张表: 1,创建一个命名空间NameSpace(命名空间NameSpace指的是一个表的逻辑分组 ,同一分组中的各个表有类似的用途,相当于关系型数据库中的DataBase) ...
- hashmap源码研究
概述 在官方文档中是这样描述HashMap的: Hash table based implementation of the Map interface. This implementation pr ...
- 洛谷P1576||最小花费||dijkstra||双向建边!!
题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元. 数据范 ...
- Maven 基本用法
1. 新建一个项目目录 2. 在项目目录中新建并编写 pom.xml 文件, 3. 在项目目录中新建主代码目录 src/main/java 4. 在项目目录中新建测试代码目录 src/test/jav ...
- P2146 [NOI2015]软件包管理器
题目链接:https://www.luogu.org/problemnew/show/P2146 题目描述 Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安 ...