文本文档的读写

最重要的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. 在CcentOS系统上将deb包转换为rpm包

    deb文件格式本是ubuntu/debian系统下的安装文件,那么我想要在redhat/centos/fedora中安装,需要把deb格式的软件包转化成rpm格式. 需要用到的转换工具:alien_8 ...

  2. 3)Win10-UWA开发 API參考 - 2

     孙广东  2015.8.23 二.适用于 UWP 应用的 .NET 摘要 适用于 UWP 应用的 .NET 提供一组托管类型.你能够利用这组托管类型通过 C# 或 Visual Basic 创建 ...

  3. Java程序中的Log文件配置

    log4j.properties文件 log4j.rootLogger=info,stdout,logfile #stdout log4j.appender.stdout=org.apache.log ...

  4. python对文件写操作报错UnicodeEncodeError

    2017-04-25 python连mongodb数据库并将提取部分数据写入本地文件时,出现UnicodeEncodeError. 解决方法:指定文件字符集为utf-8,在文件头部加入以下代码 imp ...

  5. 【转】Linux 中清空或删除大文件内容的五种方法(truncate 命令清空文件)

    原文: http://www.jb51.net/article/100462.htm truncate -s 0 access.log -------------------------------- ...

  6. vue笔记二

    七.列表渲染 1.示例 <ul id="example-2"> <li v-for="(item, index) in items"> ...

  7. Laravel创建项目和安装PHPStorm IDE插件

    一.win10下安装composer1.下载composer.phar,放入php的安装目录https://getcomposer.org/download/1.4.2/composer.phar 2 ...

  8. 国内外DNS服务器地址列表大全

    DNS(Domain Name System)是域名解析服务器的意思,它在互联网的作用是把域名转换成为网络可以识别的IP地址. 通常来说,香港.韩国.日本等国的DNS服务器速度会比较快,大家可以多用几 ...

  9. vuejs 表单验证插件 VeeValidate

    VeeValidate https://baianat.github.io/vee-validate/

  10. HDU-1047-Integer Inquiry(Java大数水题 &amp;&amp; 格式恶心)

    Integer Inquiry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...