文本文档的读写

最重要的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的更多相关文章

  1. python入门基础:文件的读写

    文件的读写操作运用广泛,无论是何种语言都会涉及到文件的输入输出. 下面简单的总结一下文件的读写: 1:open()函数 f = open('workfile', 'w') 函数 open()返回文件的 ...

  2. python文件的读写的模式

    <1>打开文件 在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件 open(文件名,访问模式) 示例如下: f = open('test.txt', 'w' ...

  3. [ Python入门教程 ] Python文件基本操作

    本文将python文件操作实例进行整理,以便后续取用. 文件打开和创建 Python中使用open()函数打开或创建文件.open()的声明如下: open(name[, mode[, bufferi ...

  4. Python文件的读写操作

    Python文件的使用 要点:Python能够以文本和二进制两种形式处理文件. 1.文件的打开模式,如表1:  注意:使用open()函数打开文件,文件使用结束后耀使用close()方法关闭,释放文件 ...

  5. python文件的读写总结

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

  6. python文件的读写权限以及相关应用read、write和文件指针

    f=open('ceshi.txt','a',encoding='utf-8')r=open('ceshi.txt','r',encoding='utf-8')上面的2种写法可以用with来写:wit ...

  7. Python 第三篇(上):python文件基础操作、json模块、lambda、map、filter、reduce和函数位置参数

    python一切皆对象,linux一切皆文件,python操作文件是很常见的O/I操作,其内置来open()函数可以完成文件的基本操作: 一:使用内置open()函数操作文件,基本语法如下: with ...

  8. Python文件的读写

    一.写数据 f = open("hello.txt", "w") f.write("hello world python!") f.clos ...

  9. 【8】python文件的读写方法

    (1).读文件的步骤: (1)打开文件 open(path,flag,encoding,[errors]) path:打开路径 flag:打开方式 r(只读) rb(二进制格式) r+(可以读写) w ...

  10. [ Python ] 文件的读写操作

    1. 文件读写操作 读写文件是最常见的 IO 操作, Python 内置了读写文件的函数.在磁盘上读写文件的功能是由操作系统提供的,所以读写文件是请求操作系统打开一个文件对象(通常称为文件描述符),然 ...

随机推荐

  1. 新人补钙系列教程之:AS 与 JS 相互通信

    比较常用的,AS 调用 JS private function callJS():void{ ExternalInterface.addCallback("callbackQQPay&quo ...

  2. Java 堆内存模型

    堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象. 在 Java 中.堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( Old ).新生代 ...

  3. 使用websocket进行消息推送服务

    Websocket主要做消息推送,简单,轻巧,比comet好用 入门了解:https://www.cnblogs.com/xdp-gacl/p/5193279.html /** * A Web Soc ...

  4. Java学习之泛型和异常

    泛型 1,设计原则或目的:只要代码在编译的时候没有错误,就不会抛异常.  2,泛型通配符  :类型通配符一般是使用 ? 代替具体的类型实参.注意了,此处是类型实参,而不是类型形参!相当于(父类作用)L ...

  5. 2017.5.1 使用fat jar插件来打包有引用外部jar包的项目

    如果在程序开发时用到了第三方提供的API.jar包或者其他附属资源.在导出并生成项目的jar文件时,必须将第三方的文件一并导出,否则无法正确运行. 可以使用fat jar插件,下载地址:http:// ...

  6. sql 查询重复的数据

    select * from yryz_role_partner where user_id in (select user_id from yryz_role_partner group by use ...

  7. running android lint has encountered a

    近期写学习android编程的的时候,每次保存.java文件的时候,总会跳出例如以下错误 这个错误不是属于程序错误,把它关掉对于编程没有不论什么影响,但每次见到这个就是不爽,希望大神可以解决一下,谢谢 ...

  8. vscode - 安装离线插件

    打开网站(示例): https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow 下载扩展 vscode 安装离 ...

  9. Java 二分法查找

    算法:当数据量很大适宜采用该方法.采用二分法查找时,数据需是有序不重复的. 基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功:若 x 小于 ...

  10. php调用python

    test_python.php <?php $k = $_REQUEST['k']; if (!empty($k)) { $k = trim($k); //$a 用来捕获输出 // 这里的arr ...