Python学习第15天:Python 输入输出2

138 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情 >>

3 文件读写

函数 open() 返回文件对象,通常的用法需要两个参数:open(filename, mode)。

第一个参数 filename 是要访问的文件名,第二个参数 mode 是描述如何使用该文件(可取值主要包括:'r' 读取文件;'w' 只是写入文件,已经存在的同名文件将被删掉;'a' 打开文件进行追加,自动添加到末尾;'r+' 打开文件进行读取和写入;'rb+' 以二进制格式打开一个文件用于读写...),mode 参数是可选的,默认为 'r'。

3.1 文件对象方法

  • read()

要读取文件内容,调用 read(size) ,size为可选参数。

>>> f = open('tmp.txt', 'r')
>>> str = f.read(5)
>>> print(str)
>>> f.close()
Hello
  • readline()

读取一行,换行符为 \n 。

>>> f = open('tmp.txt', 'r')
>>> str = f.readline()
>>> print(str)
>>> f.close()
  • readlines()

读取文件中包含的所有行,可设置可选参数 size 。

>>> f = open('tmp.txt', 'r')
>>> str = f.readlines(1)
>>> print(str)
>>> f.close()
['Hello Python']
  • write()

write(string) 将 string 的内容写入文件。

>>> f = open('tmp.txt', 'w')
>>> num = f.write('Hello Python')
>>> print(num)
>>> f.close()
12
  • seek()

seek(offset, from_what) 改变文件当前的位置。offset 移动距离;from_what 起始位置,0 表示开头,1 表示当前位置,2 表示结尾,默认值为 0 ,即开头。

>>> f = open('tmp.txt', 'rb+')
>>> f.write(b'0123456789abcdef')
# 移动到文件的第 6 个字节
>>> f.seek(5)
>>> print(f.read())
b'56789abcdef'
  • tell()

tell() 返回文件对象当前所处的位置,它是从文件开头开始算起的字节数。

>>> f = open('tmp.txt', 'r')
>>> f.seek(5)
>>> print(f.tell())
5
  • close()

当你处理完一个文件后,调用 close() 来关闭文件并释放系统的资源。也可以使用 with 关键字处理文件对象,实现文件用完后自动关闭。

>>> with open('tmp.txt', 'r') as f: 
...     read_data = f.read()
>>> print(f.closed)
True

3.2 操作 json 格式数据

  • json.dumps(obj)  序列化,obj 转换为 json 格式的字符串;
  • json.dump(obj, fp)  序列化,将 obj 转换为 json 格式的字符串,将字符串写入文件;
  • json.loads(str)  反序列化,将 json 格式的字符串反序列化为一个 Python 对象;
  • json.load(fp)  反序列化,从文件中读取含 json 格式的数据,将之反序列化为一个 Python 对象。
>>> import json
>>> data = {'id':'1', 'name':'jhon', 'age':12}
>>> with open('t.json', 'w') as f:
...    json.dump(data, f)
>>> with open("t.json", 'r') as f:
...    d = json.load( f)
>>> print(d)
{'id': '1', 'name': 'jhon', 'age': 12}