python从入门到入魔第十天——文件的使用以及数据格式化

文件的简单介绍

文件是一个存储在辅助器上的数据序列,可以包括任何数据内容。

文本文件一般有单一的编码字符组成,比如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库的使用
留下你的赞,让更多人的人看到吧!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如何学会学习?

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值