编码格式
python的解释器使用的是Unicode(内存)
.py文件在磁盘上使用UTF-8存储(外存)
编码encode就是把人类语言转成计算机语言。解码decode就是把计算机语言转成人类语言。
计算机语言有一个相同之处,就是最前面都有一个字母‘b’,这是代表它是bytes(字节)类型的数据。计算机的编码,就是把字符串类型的数据,转换成bytes类型的数据。计算机的解码,就是把bytes类型的数据,转换成字符串类型的数据。编码时用什么样的编码表,解码的时候就用什么样的编码表。
文件读写的原理
文件的读写俗称“I/O操作”,流程:python操作文件—》打开或新建文件—》读/写文件—》关闭资源
内置函数open()创建文件对象
语法规则:
file = open (filename,mode,encoding)
# 打开模式默认为只读,默认文本文件中字符的编写格式为gbk
常见的文件打开模式
按文件中数据的组织形式,文件分为以下两大类:
文本文件:存储的是普通字符文本,默认为unicode字符集,可以使用记事本程序打开;
二进制文件:把数据内容用“字节”进行存储,无法用记事本打开,必须使用专用的软件打开,如MP3音频文件/图片/.doc文档等
r
:只读模式,文件的指针将会放在文件的开头
w
:只写模式,如果文件不存在即创建;如果文件存在,则覆盖原有内容,文件指针在文件的开头,file.write(要写入的内容)
a
:追加模式,如果文件不存在即创建,文件指针在文件的开头;如果文件存在,则在文件末尾追加内容,文件指针在原文件末尾
b
:二进制方式打开文件,不能单独使用,需要与其他模式一起使用,如rb,或wb
+
:以读写方式打开文件,不能单独使用,需要与其他模式一起使用,a+
文件对象的常用方法
read(size)
:从文件中读取size个字节或者字符的内容返回,若省略size,则读取到文件末尾,即一次读取文件所有内容
readline()
:从文本文件中读取一行内容
readlines()
:把文本文件中每一行都作为独立的字符串对象,并将这些对象放入列表返回
write(str)
:将字符串str内容写入文件
writelines(s_list)
:将字符串列表s_list写入文本文件,不添加换行符
seek(offset,whence)
:把文件指针移动到新的位置,offset表示相对于whence的位置:
- offset:为正往结束方向移动,为负往开始方向移动
- whence不同的值代表不同的含义:
- 0:从文件头开始计算(默认值)
- 1:从当前位置开始计算
- 2:从文件末尾开始计算
tell()
:返回文件指针的当前位置
flush()
:把缓冲区的内容写入文件,但不关闭文件
close()
:把缓冲区的内容写入文件,同时关闭文件,释放文件对象相关资源
with语句(上下文管理器)
with语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,从而达到释放资源的目的。
with open (filename, mode) as f:
实现了__enter__
和__exit__
方法的类创建的实例对象就是上下文资源管理器
csv模块
读取
import csv
with open("文件名.csv",encoding='utf-8-sig') as r:
print("内容如下\n")
reader = csv.reader(r)
#使用csv的reader()方法,创建一个reader对象
for content in reader:
#遍历reader对象的每一行
print(content)
print("读取完毕!")
写入
import csv
with open("文件名.csv",'a') as r:
writer = csv.writer(r)
writer.writerow([41,42,43])
print("写入完毕!")
open_file("mytest1.csv")