python文件的读写、数据的组织方式

文件的使用

文件包含两种类型:文本文件二进制文件
文本文件有UTF-8编码,内容容易显示和阅读。
二进制文件有0和1比特组成,没有统一的字符编码。

无论文件创建为那种格式,都可以用“文本文件格式”或“二进制格式”打开,打开后的操作有所不同。
python对于文件的操作——打开文件→读取/写入→关闭文件

f = open("a.txt","rb") # 以二进制文件的格式打开
print(f.readline())
f.close()

b'\xe6\x96\x87\xe6\x9c\xac\xe6\x96\x87\xe4\xbb\xb6\xe4\xb8\x8e\xe4\xba\x8c\xe8\xbf\x9b\xe5\x88\xb6\xe6\x96\x87\xe4\xbb\xb6'
f = open("a.txt","rt") # 以文本文件的格式打开
print(f.readline())
f.close()

文本文件与二进制文件

打开方式

打开方式含义
r只读,当文件不存在时,会报错
w覆盖写模式,当文件不存在时,会创建。当文件内容存在时,会完全覆盖。
x创建写模式,当文件不存在时会创建,当文件存在时,会报错
a追加写模式,当文件不存在时,会创建。当文件存在时,在原文件基础上追加

文件的读取

方法含义
f.read从文件中读取整个文件的内容
f.readline从文件中读取一行内容
f.readlines从文件中读取所有行,以每行元素形成一个列表
f.seek改变当前文件操作指针的位置,括号内值为2,表示文章末尾。值为0,表示文章开头

在这里插入图片描述
现以该文件来进行读取展示,
(1)

f = open('a.txt','rt')
print(f.read())

文本文件
二进制文件
文本文件与二进制文件

(2)

f = open('a.txt','rt')
print(f.readlines())

['文本文件\n', '二进制文件\n', '文本文件与二进制文件']

(3)

f = open('a.txt','rt')
print(f.readline())

文本文件

逐行读取内容并进行操作。

f = open('a.txt','rt')
f.seek(0)
for line in f:
    print(line)
f.close()

文本文件

二进制文件

文本文件与二进制文件

文件打开后,对文件的读写有一个读取指针,当从文件中读入内容后,读取指针将向前进,再次读取的内容将从指针的新位置开始。

文件的写入

方法含义
f.write(s)向文件写入一个字符串
f.writelines(lines)将一个元素为字符串的列表写入文件

(1)

f = open('abc.txt','w')
f.write("文本文件\n")
f.write("二进制文件\n")
f.write("文本文件与二进制文件\n")
f.close()

程序运行结果如下:注意写入的每一行后面要加上换行符。否则所有文字都连接起来。
在这里插入图片描述
(2)

f = open('abc.txt','w')
ls = ['文本文件\n','二进制文件\n','文本文件与二进制文件\n']
f.writelines(ls)
f.close()

程序运行结果与上图相同。

数据的组织方式

组织数据可以分为一维数据、二维数据和高维数据。
在这里插入图片描述

一维数据

a = ['北京市','上海市','重庆市','天津市']
print(len(a))

4

一维数据的存储方式为用特殊字符来分隔各数据,例如空格、逗号、换行。
其中:使用逗号分隔的为csv格式

将列表对象输出为csv格式,采用字符串的join()格式最为方便。
一维数据的写入

ls = ['北京','上海','重庆','天津']
f = open('read.csv','w')
f.write(','.join(ls)+"\n")
f.close()

运行结果如下:
在这里插入图片描述
一维数据的读取

f = open('read.csv','r')
ls = f.read().strip('\n').split(',')
f.close()
print(ls)

['北京', '上海', '重庆', '天津']

二维数据

二维数据可以看作许多条一维数据组成,用csv格式存储。整个csv表格代表一个二维数据。
二维数据的写入

ls = [ ['指标', '2014年', '2015年', '2016年'],
       ['居民消费价格指数', '102', '101.4', '102'],
       ['食品', '103.1', '102.3', '104.6'],
       ['烟酒及用品', '994', '102.1', '101.5'],
       ['衣着', '102.4', '102.7', '101.4'],
       ['家庭设备用品', '101.2', '101', '100.5'],
       ['医疗保健和个人用品', '101.3', '102', '101.1'],
       ['交通和通信', '99.9', '98.3', '98.7'],
       ['娱乐教育文化', '101.9', '101.4', '101.6'],
       ['居住', '102', '100.7', '101.6'], ]
f = open('a.csv','w')
for row in ls:
    f.write(",".join(row)+'\n')
f.close()

运行结果如下:
在这里插入图片描述
二维文件的写入

ls = []
f = open('a.csv','r')
for line in f:
       ls.append(line.strip('\n').split(','))
f.close()
print(ls)

[['指标', '2014年', '2015年', '2016年'],
 ['居民消费价格指数', '102', '101.4', '102'], 
 ['食品', '103.1', '102.3', '104.6'], 
 ['烟酒及用品', '994', '102.1', '101.5'], 
 ['衣着', '102.4', '102.7', '101.4'],
 ['家庭设备用品', '101.2', '101', '100.5'], 
 ['医疗保健和个人用品', '101.3', '102', '101.1'],
 ['交通和通信', '99.9', '98.3', '98.7'],
 ['娱乐教育文化', '101.9', '101.4', '101.6'], 
 ['居住', '102', '100.7', '101.6']]
  • 17
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值