文件是有序的数据序列。
编码(了解即可)
ASCII码
七个二进制位编码,表示128个字符。
ASCII码和字符的转换
ord('A')
:字符 -> ASCII码
chr('65')
:ASCII码 -> 字符
Unicode
跨语言、跨平台
统一且唯一的二进制编码
每个字符两个字节长
65536个字符的编码空间
UTF-8编码
可变长度的Unicode
文件操作
打开文件
open()
函数,语法格式如下
<variable> = open(<name>, <mode>)
<variable>
其实是一个指针
<name>
为文件名
<mode>
为打开模式
举例:
1.打开一个名为“numbers.dat”的文本文件(ASCII文件)
>>>infile = open("numbers.dat", "r")
2.打开一个名为“music.mp3”的音频文件(为二进制文件)
>>>infile = open("music.mp3", "rb")
文件操作
文件读取
文件读取的函数:
-
read()
:
返回值
为包含
整个文件内容
的
一个字符串
string
readline()
:
返回值
为文件
下一行内容
的
字符串
string
-
readlines():
返回值
为
整个文件内容
的
列表
list
,每项是
以换行符为结尾
的
一行字符串
string
。
print(line[:-1])
为去掉读取文件中多加的换行符。
文件写入
文件读取的函数:
-
write()
:把含有
文本数据
或二进制数据块的
字符串
写入到文件中。
-
writelines()
:针对
列表
操作,接受一个
字符串列表
作为参数,将他们写入文件,且
行结束符不会被自动加入
。
遍历文件模板
通用代码框架
file = open("filename", "r")
for line in file.readlines():
# 处理一行文件内容
file.close
简化代码框架(常用)
file = open("filename", "r")
for line in file:
# 处理一行文件内容
file.close()
示例1:拷贝文件
示例2:读取文件
待读取文件以“,”分隔,具体如下图:
读取文件的代码如下
result=[]
file = open("data.txt", "r")
for line in file:
result.append(list(map(float,line.split(','))))
print(result)
首先我们将
result
定义为一个空
list
。
在读取的过程中,先通过
line.split(',')
对每一行通过"
,
"分割。
然后用
map(float,line.split(','))
将分割后的元素转为
float
类型。
之后通过
list(map(float,line.split(',')))
将其转为
list
。
再通过
.append()
附加到
result
上。
示例3:多文件操作