一、文件的编码
1.文件的编码方式
计算机本质上只能处理0和1组成的二进制数字,很早的时候,为了让计算机能识别字母,美国设计了ASCII,将美国常用的128个符号转化为二进制。但世界上有汉字、日文、韩文等几百种语言,为了满足需求,业界协会同意创建了Unicode(统一码),为不同语言中的每一个字符设定了统一且唯一的二进制编码,满足了跨语言、跨平台进行文本转换和处理的需求。
2.编码与Unicode值的转换
chr()函数:
功能:返回数字i,对应的的Unicode字符
i 可以是任意进制数值,在转换时都会自动转换为二进制数值。
使用形式:
chr(i)
示例代码
#35的十进制、十六进制、二进制
print(chr(35),chr(0x23),chr(0b00100011))
ord()函数:
功能:返回参数c的Unicode数值
参数c:数据类型为字符串类型且表示单个字符。
使用形式:
ord(c)
示例代码
总结:
二、操作文件
1.打开文件
open()函数:
功能:打开一个文件
file:需要打开文件的文件地址(包含路径和文件名)
参数mode:指文件打开都模式(几种打开模式如下表格)
使用形式如下:
模式表格
模式字符 | 描述 | 文件存在 | 文件不存在 |
---|---|---|---|
'r' | 只读(默认) | 打开文件 | 抛出错误 |
'w' | 只写 | 清空文件 | 创建新文件 |
'x' | 独占创建 | 抛出错误 | 创建新文件 |
'a' | 追加 | 从末尾开始写 | 创建新文件 |
'b' | 二进制模式 | 与其他模式结合使用 | - |
't' | 文本模式(默认) | 与其他模式结合使用 | - |
'+' | 读写 | 与其他模式结合使用 | - |
实例代码:
f = open(r'D:\pythonProject11\长歌行.txt','r') #在路径前加一个‘r'避免转义报错
print(f)
2.打开模式
open函数的mode参数具有多个模式,接下来介绍几种常见模式的使用效果。
- ‘w’覆盖写模式
如果文件夹内没有参数file路径中指定的文件,则会创建名为file的文件,如果文件夹中词文件已存在,则删除此文件的内容,重新写入内容。
示例代码:
for i in range(1,101):
path='D:\\pythonProject11\\csdn\\数据2\\数据'+str(i)+'.txt'
f = open(path,'w')
f.close()
- ‘x’创建写功能
’x'为创建写模式,在使用‘x'模式时,会创建一个新文件,并给定新文件写入权限。如果计算机中已经存在与参数file同名的文件,则会出现异常错误,因此需要确保创建文件在计算机中不存在。
示例代码:
for i in range(1,101):
path='D:\\pythonProject11\\csdn\\数据2\\数据'+str(i)+'.txt'
f = open(path,'x')
f.close()
for i in range(1,101):
path='D:\\pythonProject11\\csdn\\数据2\\a数据'+str(i)+'.txt'
f = open(path,'x')
f.close()
- ‘a’追加写模式
使用此模式时,保留原有的文件内容,并在文件的末尾继续追加写入新内容。如果文件不存在,则会创建一个新文件,新文件具备写入权限。
示例代码:
f = open(r'D:\pythonProject11\长歌行.txt','a',encoding='utf-8') #引用‘a’模式
f.write('aaaa')
f.close()
- ‘+’增加模式
‘+’模式为增加模式,此模式需要与‘r'、’w'、‘x’、‘a’模式中的一种结合使用,表示在原有模式基础上增加读写权限。
示例代码:
- open()复写模式
open()函数还有一种复合写法,可以避免用户因忘记使用close()方法关闭文件(f.close())而导致的程序异常 .
使用形式如下:
with open(参数) as 变量名: #最后有一个‘:’别忘了
示例代码:
三、读取文件
- read()方法
read()方法使用形式如下:
读取文件内容前需要确定文件的打开模式是否为只读模式,如果是,则可以使用read()、readline()、readlines()方法读取文件内信息。
文件对象.read(site=-1) #site 从文件中读取site个字符的内容,默认为读取全部内容
示例代码
示例代码:(读取文件的前10个字)
如果encoding没有指定,系统会默认编码为GBK编码方式。由于文件存在中文,GBK编码方式无法解析中文字符,所以read()读取时报错。
- readline()方法
readline()方法使用形式如下:
功能:从文件中读取一行内容
参数site:默认从文件中读取一行内容,如果site为其他数值,则读取该行前site个字符
readlines(site = -1)
示例代码:
site填入其他数值
- readlines()方法:
功能:从文件中读取所有文件的内容,以列表形式返回,每行内容为列表中的一个元素
参数hint:获取所在行内容的hint个字符。例如第1行有5个字符,换interesting,就只读取第1行内容
使用形式如下:
readlines(hint=-1)
示例代码:
四、写入文件
- write()方法
功能:把字符串text写入文件。
参数text:表示写入信息,其数据类型为字符串类型
返回值:返回写入的字符串
write()方法使用如下:
write(text)
示例代码:
因为使用了‘w’模式所有会将原有‘长歌行.txt’内容全部清除
- writelines()方法
功能:把字符串列表(列表中的元素均为字符串)写入文件,且不添加换行符。
参数lines:字符串列表
返回值:返回None,表示空
writelines()方法使用形式如下:
writelines(lines)
示例代码