爬虫入门【7】Python-文件的读写和JSON
文本文档的读写
最重要的open()方法将返回一个file对象,经常使用的两个参数为open(filename,mode)
其中,filename为file保存的地址,可以是本地地址,相对地址或者绝对地址。
mode对象为对file对象进行的操作
'''对这个方法进行一些解释
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
file就是要操作的文件的地址,这个文件如果不存在,会创建;如果存在会打开;
mode参数:
r
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+
打开一个文件用于读写。文件指针将会放在文件的开头。
rb+
以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w
打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb
以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+
打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+
以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+
打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
encoding参数用于控制对文件的解码或者编码
'''
接下来,对这个file对象来解释一下概念和方法,首先是读取的方法:
read()方法
会将所有内容一次性打印出来
read(size)方法,可以限定读取内容的大小,size是字符的数量吧,大约是这样
举个例子,假如当前路径下面有个workfile.txt,文件,里面的内容是这样的:
/Hello World!
1+2=?
明天天气如何?/
f=open('workfile.txt','r',encoding='utf-8')
print(f.read())
f.close()#一定要记得将文件流关闭
Hello World!
1+2=?
明天天气如何?
如果read没有传入任何参数,那么会将文件中所有的内容都会被打印出来。
比较适合文件很小的情况。那么如果文件很大,怎么办呢?
read(size)方法适合这种情况:
f=open('workfile.txt','r',encoding='utf-8')
print(f.read(10))
f.close()#一定要记得将文件流关闭
Hello Worl
你看,打印出了10个字符~~
readline()方法
该方法会读取file中的一行,如果没有读取到最后,还可以继续使用readline方法获取下一行。
f=open('workfile.txt','r',encoding='utf-8')
print(f.readline())#打印出第一行
print(f.readline())#打印出第二行,由于我们第二行是空行,所以没有内容显示出来。
print(f.readline())#好了,第三行出来了。
#f.close()
Hello World!
可以看出,如果使用readline()方法,将不断的打印。
readlines()方法
从文件流中读取并且返回一个行的list。
此时,我们也学习一个比较方便的打开文件的方法,不用再惦记f.close()啦。
那就是with as语句,举个栗子~
with open('workfile.txt','r',encoding='utf-8') as file:
for line in file.readlines():
print(line.strip())
Hello World!
1+2=?
明天天气如何?
Write()方法
f.write(string)将字符串格式的内容写到文件中,返回写入的字符数。
如果是其他格式的内容,使用str()方法转换之后再传入。
还有writelines()方法。
>>> f.write('This is a test\n')
>>>15
f=open('workfile.txt','a',encoding='utf-8')
f.write('\n')
f.write('这是写入的第一行~\n')
f.close()
Hello World!
1+2=?
明天天气如何?
这是写入的第一行~
f.tell()方法
f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。
f.seek()方法
如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数。
from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:
seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
seek(x,1) : 表示从当前位置往后移动x个字符
seek(-x,2):表示从文件的结尾往前移动x个字符
from_what 值为默认为0,即文件开头。
JSON文件的读写
JSON是一种轻量级的数据交换格式。
Python中包含了json模块来对JSON进行编解码。
主要应用的两个函数为:
json.dumps(): 对数据进行编码。
json.loads(): 对数据进行解码。
在json的编解码过程中,python的原始类型会与json类型进行相互转换。
如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据。
Python和JSON类型转换对应:
JSON----------Python
object--------dict
array---------list
string---------str
number(int)----int
number(real)---float
true-----------True
false----------False
null-----------None
下面我们展示几个栗子:
import json
data={
'admin':'admin',
'url':'http://www.baidu.com',
'password':'somepassword'
}
json_str=json.dumps(data)
print('Python原始数据',repr(data))
print('JSON格式',json_str)
Python原始数据 {'admin': 'admin', 'url': 'http://www.baidu.com', 'password': 'somepassword'}
JSON格式 {"admin": "admin", "url": "http://www.baidu.com", "password": "somepassword"}
输出结果很相似。
如果要想这个data写入文件的话,是这样的代码:
import json
data={
'admin':'admin',
'url':'http://www.baidu.com',
'password':'somepassword'
}
with open('data.json','w') as f:
json.dump(data,f)
#当前路径下会出现data.json文件,里面的内容和上面的类似。
我们在展示一下如何从文件中读取json:
import json
with open('data.json','r') as f:
data=json.load(f)
print(data)
print("data['url']:",data['url'])#可以看出,读取的json文件可以看成一个字典操作。
#输出结果如下:
{'url': 'http://www.baidu.com', 'admin': 'admin', 'password': 'somepassword'}
data['url']: http://www.baidu.com
爬虫入门【7】Python-文件的读写和JSON的更多相关文章
- python入门基础:文件的读写
文件的读写操作运用广泛,无论是何种语言都会涉及到文件的输入输出. 下面简单的总结一下文件的读写: 1:open()函数 f = open('workfile', 'w') 函数 open()返回文件的 ...
- python文件的读写的模式
<1>打开文件 在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件 open(文件名,访问模式) 示例如下: f = open('test.txt', 'w' ...
- [ Python入门教程 ] Python文件基本操作
本文将python文件操作实例进行整理,以便后续取用. 文件打开和创建 Python中使用open()函数打开或创建文件.open()的声明如下: open(name[, mode[, bufferi ...
- Python文件的读写操作
Python文件的使用 要点:Python能够以文本和二进制两种形式处理文件. 1.文件的打开模式,如表1: 注意:使用open()函数打开文件,文件使用结束后耀使用close()方法关闭,释放文件 ...
- python文件的读写总结
读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...
- python文件的读写权限以及相关应用read、write和文件指针
f=open('ceshi.txt','a',encoding='utf-8')r=open('ceshi.txt','r',encoding='utf-8')上面的2种写法可以用with来写:wit ...
- Python 第三篇(上):python文件基础操作、json模块、lambda、map、filter、reduce和函数位置参数
python一切皆对象,linux一切皆文件,python操作文件是很常见的O/I操作,其内置来open()函数可以完成文件的基本操作: 一:使用内置open()函数操作文件,基本语法如下: with ...
- Python文件的读写
一.写数据 f = open("hello.txt", "w") f.write("hello world python!") f.clos ...
- 【8】python文件的读写方法
(1).读文件的步骤: (1)打开文件 open(path,flag,encoding,[errors]) path:打开路径 flag:打开方式 r(只读) rb(二进制格式) r+(可以读写) w ...
- [ Python ] 文件的读写操作
1. 文件读写操作 读写文件是最常见的 IO 操作, Python 内置了读写文件的函数.在磁盘上读写文件的功能是由操作系统提供的,所以读写文件是请求操作系统打开一个文件对象(通常称为文件描述符),然 ...
随机推荐
- hdata datax交流总结
http://blog.csdn.net/zlm838687/article/details/74781522 hdata datax交流总结 今天和阿里云的同学就数据同步做了简要的交流,下面就交流的 ...
- jconsole使用记录
jconsole/JVisualVM连接linux服务器查看JVM使用情况 现需要在本地电脑上查看服务器的tomcat的整体的运行状态,使用jconsole工具. JMX配置 拷贝$JAVA_HOME ...
- SSO单点登录系列6:cas单点登录防止登出退出后刷新后退ticket失效报500错
这个问题之前就发现过,最近有几个哥们一直在问我这个怎么搞,我手上在做另一个项目,cas就暂时搁浅了几周.现在我们来一起改一下你的应用(client2/3)的web.xml来解决这个2b问题,首先看下错 ...
- 【Android工具类】怎样保证Android与server的DES加密保持一致
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在我们的应用程序涉及到比較敏感的数据的时候,我们一般会对数据进行简单的加密.在与server之间的数据交互中 ...
- Python 实现指定目录下 删除指定大小的文件
import os, sys from stat import * BIG_FILE_THRESHOLD = 6000L #1000000L dict1 = {} # dict2 = {} # def ...
- Android学习(十八)Toast的使用
一.什么是Toast 1.Toast是一种提供给用户简洁提示信息的视图. 2.该视图以浮于应用程序之上的形式呈现给用户, Toast提示界面不获取焦点,在不影响用户使用的情况下,给用户某些提示. 3. ...
- NodeJS中的循环陷阱
Node.js的异步机制由事件和回调函数实现,一開始接触可能会感觉违反常规,但习惯以后就会发现还是非常easy的. 然而这之中事实上暗藏不少陷阱.一个非常easy遇到的问题就是回到循环的回调函数. e ...
- linux生成指定大小的文件(转)
# dd if=/dev/zero of=50M.file bs=1M count=50在当前目录下生成一个50M的文件 虚拟块设备文件更通用的名称是硬盘镜像文件(Hard Disk Image),但 ...
- LeetCode题目:Gray Code
原题地址:https://leetcode.com/problems/gray-code/ class Solution { public: vector<int> grayCode(in ...
- 【BIEE】06_UNION /UNION ALL集合中分类汇总求和占比字段特殊处理
环境准备 基于[BIEE]04..中建立的事实表 通过UNION ALL后得到如下报表: 优秀员工薪水公式:CASE WHEN "EMP_FACT"."级别"= ...