文件的简单介绍
文件是一个存储在辅助器上的数据序列,可以包括任何数据内容。
文本文件一般有单一的编码字符组成,比如utf-8编码。
二进制文件(视频、音频、图片等)没有统一的编码,只能当做字节流,而不能看做是字符串。
无论文件是创建文本文件还是二进制文件,都可以用“文本文件方式”和“二进制文件方式”打开,但打开后操作不同。
文件的打开
方法一:f = open("文件路径","打开模式",encoding="编码方式")
方法二:with open("文件路径","打开模式",encoding="编码方式") as f:
文件路径:分为绝对路径和相对路径,当文件和该程序文件在同一个文件夹里可直接以文件名来调出文件;f为文件句柄
打开模式:
“r” 只读模式,没有定义打开模式时默认该模式
“w” 覆盖写模式,文件不存在则建立新文件并写入相应内容,文件已经存在是则完全覆盖原有内容
“x” 创建写模式,文件不存在则建立文件并写入相应内容,文件已存在则返回异常FileExistsError
"a" 追加写模式,文件不存在则建立新文件并写入相应内容,文件已经存在是则在文本后添加内容
“rb” 二进制文件模式
“t” 文本文件模式,默认值
“+”与r/w/a/x一同使用,在原功能基础上增加同时读写功能
#定义文件句柄为f
>>> f = open("D:/日常文件/wenben.txt","r",encoding="utf-8").read()
>>> f #文本文件输出格式
'成果已改好的还不具备\n国仇家恨就今年吧会不会\n不不不吧不能吧吧\n123456789' #\n是换行符,在文本中换行符是真是存在的
>>> f = open("D:/日常文件/wenben.txt","rb").read()
>>> f #二进制输出格式
b'\xe6\x88\x90\xe6\x9e\x9c\xe5\xb7\xb2\xe6\x94\xb9\xe5\xa5\xbd\xe7\x9a\x84\xe8\xbf\x98\xe4\xb8\x8d\xe5\x85\xb7\xe5\xa4\x87\\n\xe5\x9b\xbd\xe4\xbb\x87\xe5\xae\xb6\xe6\x81\xa8\xe5\xb0\xb1\xe4\xbb\x8a\xe5\xb9\xb4\xe5\x90\xa7\xe4\xbc\x9a\xe4\xb8\x8d\xe4\xbc\x9a\\n\xe4\xb8\x8d\xe4\xb8\x8d\xe4\xb8\x8d\xe5\x90\xa7\xe4\xb8\x8d\xe8\x83\xbd\x
文件的关闭
文件在操作时,有打开也有关闭
f.close() #f为文件句柄
文件的读操作
f.read(x) #读取全部内容,给出x则读前x长度
f.readline(x) #读取一行内容,给出x则读该行前x长度
f.readlines(hint) #读取全部内容,给出hint则读前hint内容
文本文件打印方法:
1、遍历全文本:
>>> f = open("D:/日常文件/wenben.txt","r",encoding="utf-8")
>>> text = f.read()
>>> text
'123456789\n你好,世界\nzxcvbnm'
>>> with open("D:/日常文件/wenben.txt","r",encoding="utf-8") as f:
txt = f.read()
>>> txt
'123456789\n你好,世界\nzxcvbnm'
2、逐行遍历全文本:结果一样,处理方式不一样,执行效率也不一样
一次读入,逐行遍历:
>>> f = open("D:/日常文件/wenben.txt","r",encoding="utf-8")
>>> for line in f.readlines():
print(line)
123456789
你好,世界
zxcvbnm
分行读入,逐行处理:
>>> f = open("D:/日常文件/wenben.txt","r",encoding="utf-8")
>>> for line in f:
print(line)
123456789
你好,世界
zxcvbnm
文件的写操作
f.write(s) #向文件中写入字符串
f.writelines(lines) #将一个元素全为字符串的列表全部写入文件中
f.seek(offest) #改变文件前操作指针(0:文件开头;1:当前位置;2:文件结尾)
新写一个文本wenben1
>>> f = open("D:/日常文件/wenben1.txt","w+",encoding="utf-8")
>>> list = ["富强","民主","文明","和谐"]
>>> f.writelines(list)
>>> f.seek(0) #定义操作指针到文件头部
0
>>> for line in f: #打印文本
print(line)
富强民主文明和谐
数据格式化
数据组织维度
1、一维数据 :相当于数学上的集合和数组概念
2、二维数据 :,有多条一位数据组成,也称为表格数据,采用表格方式组织
3、高维数据 :由键值对类型的数据组成,采用对象方式组织,属于整合度更好的数据组织方式
数据包括文件存储和程序使用两个状态。存储不同维度的数据需要适合维度特点的文件存储格式,存储不同维度数据的程序需要适合相适应的数据类型或结构。因此,对于数据处理需要考虑存储格式以及表示和读写等两个问题
二维数据格式——CSV格式文件特点:
1.纯文本格式,通过统一的utf-8编码表示字符
2.以行为单位,开头不留空行,行之间没有空行
3.每行表示一个一维数据,多行表示二维数据
4.以逗号(英文,半角)分割每列数据,列数据为空也要保留逗号 **
5.对于表格内容,可以包含或不包含列名,包含时列名放置在文件第一行
6.采用后缀为.csv为扩展名,可以使用Excel 打开
7.用csv格式存储数据,读写比较方便,易于实现,文件也会比Excel文件小
8.不足之处是csv文件缺少Excel文件本身的很多功能,比如不能嵌入图像和图表,不能生成公式
代码实现CSV文件读\写操作:
方法:将CSV文件内容存放到列表中进行读写
读文件:
file_read = open("D:\\日常文件\\代码使用.csv","r") #文件打开
ls = [] #存储列表
for line in file_read: #分行读入文件,逐行处理
line = line.replace("\n","") #将CSV文件的换行符替代,输出结果为每行作为列表中额一个元素并以逗号分割
ls = line.split(",") #以逗号为分隔符进行分割
s = "" #定义一个空元组用来存储数据
for i in ls: #遍历列表内容
s += "{}".format(i)
print(s)
file_read.close() #文件关闭
输出:
国家城市语言
中国北京汉语
美国纽约英语
英国巴黎英语
俄罗斯莫斯科俄语
日本东京日语
写文件:
写入内容——一维数据内容
file_write = open("D:\\日常文件\\代码使用.csv","a")
file_list = ["德国","123","123"]
file_write.writelines(",".join(file_list) + "\n")
file_close()
写入内容——二维数据内容
file_write = open("D:\\日常文件\\代码使用.csv","a")
file_list = [["爱国","敬业","诚信","友善"],["自由","平等","公正","法制"]]
for line in file_list:
file_write.writelines(",".join(line) + "\n")
file_write.close()
写入内容——一维数据内容结果展示:
写入内容——二维数据内容结果展示:
CSV格式与列表的相互转换格式:
#csv文件为二维数据
fr = open("文件.csv","r") #读
fw = open("文件.csv","w") #写
ls=["需要写入的内容"]
for line in fr:
line = line.replace("\n","")
ls.append(line.split(","))
fr.close() #完成csv格式文件转换为列表
for i in range(len(ls)):#遍历行
for j in range(len(ls[i])):#遍历每行的元素所在的列
print(ls[i][j])#输出二维数据中的每一个元素
for row in ls:#将ls列表格式化后转化为csv格式
fw.write(",".jion(ls)+"\n")
fw.close()
CVS标准库实现文件读写操作:
下一篇更新CVS标准库实现文件的读写操作以及高维数据的读写操作json库的使用
留下你的赞,让更多人的人看到吧!!