python 文件读写方式
一、普通文件读写方式
1、文件路径书写格式:3种
path1 = 'C:/Users/Hjx/Desktop/text.txt' # 单个反斜杠
path2 = 'C:\\Users\\Hjx\\Desktop\\text.txt' # 两个斜杠:\\(第一个\是转义符)
path3 = r'C:\Users\Hjx\Desktop\text.txt' # r 用于防止字符转义
2、读取文件信息:
1)推荐的方式
with open('/path/to/file', 'r') as f:
content = f.read()
2)普通方式
f = open('C:\\Users\\Hjx\\Desktop\\text.txt', 'r', encoding = 'utf8') f.read() # 读取全部
f.seek(0) # 光标返回到起始位
f.read(2) # f.read(n) :读取n个字符
f.readline() # 一次性读取一行
f.readline(n) # 读取该行的前n个字符 f.close()
for line in f.readlines():
print(line)
demo:
# demo:将数据清洗存为json格式:[{'name':'...', 'lng':'...', 'address':'...'}]
path = r'C:\Users\test.txt'
f = open(path, 'r', encoding = 'utf8')
m = [] # 用于存放数据 for line in f.readlines():
st = line.split(":") # eg :st → ['name','lng','address']
name = st[0]
lng = float(st[1])
ad = st[2] # 去除多余空格
data = [['name',name],['lng',lng],['address',ad]] # 做成嵌套列表
m.append(dict(data)) # 将data转成字典格式,并追加到列表m中
f.close()
print("数据转换完成")
3、写入文件中:
with open('/Users/michael/test.txt', 'w') as f:
f.write('Hello, world!')
注意:
1、文件是ANSI编码,读写文件时 encoding 则采用'gbk'的编码方式
2、如果是要读取二进制文件,比如图片、视频等等,用'rb'或'wb'
模式打开文件:
>>> f = open('/Users/michael/test.jpg', 'rb')
>>> f.read()
'\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...' # 十六进制表示的字节
3、要读写非ASCII编码的文本文件,就必须以二进制模式打开,再解码。比如GBK编码的文件
>>> f = open('/Users/michael/gbk.txt', 'rb')
>>> u = f.read().decode('gbk')
>>> u
u'\u6d4b\u8bd5'
如果每次都这么手动转换编码比较麻烦,Python还提供了一个codecs
模块帮我们在读文件时自动转换编码,直接读出unicode:
import codecs
with codecs.open('/Users/michael/gbk.txt', 'r', 'gbk') as f:
f.read() # u'\u6d4b\u8bd5'
二、json文件读写方式
1、保存json文件:
model={...} #数据
with open("./hmm.json",'w',encoding='utf-8') as json_file:
json.dump(model,json_file,ensure_ascii=False)
2、读取json文件:
model={} #存放读取的数据
with open("./hmm.json",'r',encoding='utf-8') as json_file:
model=json.load(json_file)
三、pickle 模块存取数据
pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。 python的pickle模块实现了基本的数据序列和反序列化 pickle.dump():通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储 pickle.load():通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。 即:将对象信息序列化操作后存于文件中,再通过反序列化操作将文件中的数据读取出来并还原成对象格式
1、存储:pickle.dump(obj, file, [,protocol])
import pickle data = {'a':[1,2,3,4], 'b':('string','abc'), 'c':'hello'} # 字典对象 pic = open( 'C:\\Users\\Hjx\\Desktop\\data.pkl', 'wb')
# 以二进制来存储:rb, wb, wrb, ab pickle.dump(data,pic)
pic.close()
# 将一个字典数据存成了pkl文件
2、读取:pickle.load(file)
# 读取:pickle.load(file) f = open( 'C:\\Users\\Hjx\\Desktop\\data.pkl', 'rb') st = pickle.load(f)
print(st)
# 直接读取pkl文件内的数据,该数据为一个字典 # 输出:
{'c': 'hello', 'a': [1, 2, 3, 4], 'b': ('string', 'abc')}
python 文件读写方式的更多相关文章
- python文件读写方式
window下换行\r\n linux.unix.mac下都是\n - 以二进制的形式wb写入,同样以二进制的方式读取rb ``` f = open('file name','wb') f.write ...
- python文件读写及形式转化和CGI的简单应用
一丶python文件读写学习笔记 open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode) filename:包含了你要访问的文件名称的字符串值. mo ...
- python 文件读写操作(24)
以前的代码都是直接将数据输出到控制台,实际上我们也可以通过读/写文件的方式读取/输出到磁盘文件中,文件读写简称I/O操作.文件I/O操作一共分为四部分:打开(open)/读取(read)/写入(wri ...
- Python文件读写机制
Python提供了必要的函数和方法进行默认情况下的文件基本操作 文件打开方式: open(name[,mode[buf]]) name:文件路径 mode:打开方式 buf:缓冲buffering大小 ...
- Python文件读写
读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的 文件打开模式 模式 意义 r 文本只读 w 文本只写 rb 二进制读 rw 二进制写 打开文件 选择一个模式打开一个文件 ...
- 转载:python文件打开方式详解——a、a+、r+、w+区别
第一步 排除文件打开方式错误: r只读,r+读写,不创建 ###f.readline()是读取第一行,f.readlines()是读取全部并返回一个列表 w新建只写,w+新建读写,会将文件内 ...
- 【学习】python文件读写,用with open as的好处,非常好【转载】
原文链接:http://www.cnblogs.com/ymjyqsx/p/6554817.html 备注:博主还有很多值得学习的笔记,遇到问题可以拜读,非常感谢博主的总结 读写文件是最常见的IO操作 ...
- python文件读写,以后就用with open语句
读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...
- Python文件读写(open(),close(),with open() as f...)
Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件读写,也需要注意编码问题 ...
随机推荐
- Linux第一节课学习笔记
我的目标是考过RHCE 开源软件有使用.复制.传播.收费.修改及创建衍生品自由,其中后二者只有开源软件才有,前四者开闭源共有.
- 第一章 C#入门(Windows窗体应用程序)(二)
C#窗体应用程序(二) [案例]设计登录界面,效果如下: [案例实现步骤] 1.新建项目(Windows控制台应用程序 文件→新建→项目:选择“项目类型”为Visual C#,“模板”为Windows ...
- python3.6 内置函数
python内置函数 # encoding: utf-8 # module builtins # from (built-in) # by generator 1.145 ""&q ...
- 为什么我们不要 .NET 程序员
英文原文:Why we don’t hire .NET programmers,编译:外刊IT评论 http://blog.jobbole.com/10389/ 也许你已经知道了,我们正在招聘最优秀的 ...
- Kong安装教程(v1.0.2)
使用的软件 Unbuntu 虚拟机(有自己的服务器更好) PostgreSQL kong kong-dashboard docker spring boot 安装 PostgreSQL kong 需要 ...
- 关于CoreData的用法
有些同事觉得CoreData是一个看不懂,理解不清的神秘东东,其实ios的本地数据储存是一个sqlite数据库,一个简易的数据库,而这个CoreData是否支持所有储存的数据呢,显然不是的,站在我的角 ...
- centos6.5 yum安装redis
1.yum添加epel源 yum install epel-release 2.安装yum yum install redis 3.Redis 服务端配置——Could not connect to ...
- (整理)MySQL_REHL6.5 安装MySQL5.5
1 根据系统选择Mysql版本 https://dev.mysql.com/downloads/mysql/5.5.html?os=31&version=5.1 在命令行的方式下,REHL/C ...
- Redis 存储数组
我们知道Redis是不可以直接存储数组的. 我们只需在存储数组之前序列化(serialize)一下, 然后获取的时候反序列化(unserialize) 就解决这个问题了!
- php 对象转字符串
$json_string = json_encode($object, JSON_FORCE_OBJECT); json_encode($object); //结果:"[{"aa& ...