一、普通文件读写方式

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 文件读写方式的更多相关文章

  1. python文件读写方式

    window下换行\r\n linux.unix.mac下都是\n - 以二进制的形式wb写入,同样以二进制的方式读取rb ``` f = open('file name','wb') f.write ...

  2. python文件读写及形式转化和CGI的简单应用

    一丶python文件读写学习笔记 open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode) filename:包含了你要访问的文件名称的字符串值. mo ...

  3. python 文件读写操作(24)

    以前的代码都是直接将数据输出到控制台,实际上我们也可以通过读/写文件的方式读取/输出到磁盘文件中,文件读写简称I/O操作.文件I/O操作一共分为四部分:打开(open)/读取(read)/写入(wri ...

  4. Python文件读写机制

    Python提供了必要的函数和方法进行默认情况下的文件基本操作 文件打开方式: open(name[,mode[buf]]) name:文件路径 mode:打开方式 buf:缓冲buffering大小 ...

  5. Python文件读写

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的 文件打开模式 模式 意义 r 文本只读 w 文本只写 rb 二进制读 rw 二进制写 打开文件 选择一个模式打开一个文件 ...

  6. 转载:python文件打开方式详解——a、a+、r+、w+区别

    第一步 排除文件打开方式错误: r只读,r+读写,不创建      ###f.readline()是读取第一行,f.readlines()是读取全部并返回一个列表 w新建只写,w+新建读写,会将文件内 ...

  7. 【学习】python文件读写,用with open as的好处,非常好【转载】

    原文链接:http://www.cnblogs.com/ymjyqsx/p/6554817.html 备注:博主还有很多值得学习的笔记,遇到问题可以拜读,非常感谢博主的总结 读写文件是最常见的IO操作 ...

  8. python文件读写,以后就用with open语句

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  9. Python文件读写(open(),close(),with open() as f...)

    Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件读写,也需要注意编码问题 ...

随机推荐

  1. activiti学习第二天

    今天我们来发布一个流程,然后查看数据库中都发生了什么变化. 下面我们使用activiti designer设计一个流程.如图 流程很简单,我们先简单后增加难度. 创建流程图的顺序,新建一个文件夹(di ...

  2. 【java多线程】队列系统之DelayQueue源码

    一.延迟队列 延迟队列,底层依赖了优先级队列PriorityBlockingQueue 二.延迟队列案例 (1)延迟队列的任务 public class DelayTask implements De ...

  3. WRITING POSTGRESQL TRIGGERS IN GO

    转自:https://www.opsdash.com/blog/postgresql-triggers-golang.html 可以学习如何使用golang 编写pg extension Trigge ...

  4. algernon 基于golang 的独立的支持redis lua pg。。。 的web server

    algernon 看到github 的介绍很很强大,一下子想到了openresty,功能看着很强大,支持 redis pg lua markdown quic http2 mysql 限速 pongo ...

  5. python调用mediainfo工具批量提取视频信息

    写了2个脚本,分别是v1版本和v2版本 都是python调用mediainfo工具提取视频元数据信息 v1版本是使用pycharm中测试运行的,指定了视频路径 v2版本是最终交付给运营运行的,会把v2 ...

  6. JVMj机制

  7. 简析Colorspace

    最近Colorspace成为了一个很高频的问题,很多Compositor为这个概念感到纠结,其实这是很正常的,因为Colorspace发展了很多年,也有很多种标准,最后还要落地到合成软件中,中间自然就 ...

  8. Kafka和的安装与配置

    本文主要介绍Kafka的安装与配置: 集群规划 datanode1 datanode2 datanode3 zk zk zk kafka kafka kafka kafka jar包下载地址 http ...

  9. Vue 路由及路由默认跳转

    路由就是让根组件动态得去挂载其他组件: 步骤: //路由配置: //.安装 npm install vue-router --save / cnpm install vue-router --save ...

  10. Celery 异步任务 , 定时任务 , 周期任务 的芹菜

    1.什么是Celery?Celery 是芹菜Celery 是基于Python实现的模块, 用于执行异步定时周期任务的其结构的组成是由    1.用户任务 app    2.管道 broker 用于存储 ...