首先昨天讲的内容有

  类型转换

    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文件的操作的更多相关文章

  1. Linux命令-文件文本操作grep

    文件文本操作 grep 在文件中查找符合正则表达式条件的文本行 cut 截取文件中的特定字段 paste 附加字段 tr 字符转换或压缩 sort 调整文本行的顺序,使其符合特定准则 uniq 找出重 ...

  2. [No000083]文件与文件夹操作

    #region Folder option 文件夹操作 /// <summary> /// 指定目录是否存在 /// </summary> /// <param name ...

  3. PHP 文件夹操作「复制、删除、查看大小」递归实现

    PHP虽然提供了 filesize.copy.unlink 等文件操作的函数,但是没有提供 dirsize.copydir.rmdirs 等文件夹操作的函数(rmdir也只能删除空目录).所以只能手动 ...

  4. c语言文件读写操作总结

    C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...

  5. OC NSFileHandle(文件内容操作)

    OC NSFileHandle(文件内容操作) 初始化 [NSFileHandle fileHandleForUpdatingAtPath:@"data.txt"]; //file ...

  6. python对文件的操作

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.返回指定目录下的所有文件 ...

  7. [转]Android - 文件读写操作 总结

     转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...

  8. Adobe AIR对本地文件(XML文件)的操作

    引用:http://addiwang.blog.163.com/blog/static/118130772011221114230288/ Air的文件操做主要涉及两个类,FIle和FileStrea ...

  9. PHP 文件的操作

    操作文件的步骤: 1.打开文件2.做操作PS!!!3.关闭文件 打开 操作

随机推荐

  1. go语言环境安装

    Go 是一个开源的编程语言,被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言. 1. 准备环境并安装依赖包 创建centos 7.6 64bit的虚拟机. 安装 ...

  2. SQLServer 主键、外键、唯一等约束

    主键(primary key)约束.外键(foreign key)约束.唯一(unique)约束.检查(check)约束.默认值(default)约束实例 Oracle 有如下类型的约束:NOT NU ...

  3. js 加减乘除以及四舍五入 新写法

    1 四舍五入 eg: (1.23).round() = 1.2 (1.2456).round(3) = 1.246 Number.prototype.round = function (count) ...

  4. mysql中文查询问题

    alter table t_foo change `str` `str` varchar(100) character set utf8 not null ;

  5. Spring Scheduled定时任务报错 java.lang.IllegalStateException: Encountered invalid @Scheduled method 'xxx': For input string: "2S"

    报错信息如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ding ...

  6. centos7 使用ss和Privoxy 实现命令行访问google

    1.更新yum 这里可能更新时间有点长,,稳住~别急 yum -y upgrade 2.安装 epel-release 这个必须先安装,因为: python-pip 和 privoxy 都在EPEL源 ...

  7. .NET、JAVA和PHP在Web开发的优缺点

    现在做Web开发,用哪个平台哪种语言其实本质上没有太大的区别,因为Web开发框架已经非常成熟,只要符合需求,能按时交付产品就ok了. 要选择哪个平台,是个商业问题,不是技术问题. 选择任何的语言最好深 ...

  8. java进阶系列之装饰器模式

    1.介绍 装饰器模式顾名思义就是装饰某个对象的,是一种结构型模式.装饰器模式允许向一个现有对象添加新的功能,同时不改变其结构,用户可以随意的扩展原有的对象.它是作为现有的类的一个包装.装饰器模式一方面 ...

  9. JS学习记录------JS基本指令

    对未来的恐慌,和想成为一名自由开发的梦想.让我觉得应该点亮一个新的技能:WEB前端开发. 重新学习JS以及jQuery,让我在日常code的过程中可以更得心应手,毕竟,我爱代码. 这篇文章主要记录的内 ...

  10. Mac使用Charles进行HTTPS抓包

    技术来源: PengYunjing 第一步 配置HTTP代理,这步与抓取HTTP请求是一样的: 选择在8888端口上监听,然后确定.够选了SOCKS proxy,还能截获到浏览器的http访问请求. ...