简介
在之前的编程中, 我们的信息打印, 数据的展示都是在控制台 (命令行) 直接输出的, 信息都是一次性的没有办法复用和保存以便下次查看, 今天我们将学习 Python 的输入输出, 解决以上问题.
复习
得到输入用的是 input(), 完成输出用的是 print(), 之前还有对字符串的操作, 这些我们都可以使用 help()命令来查看具体的使用方法.
文件
在 Python2 的时候使用的是 file 来创建一个 file 类, 对它进行操作. Python3 中去掉了这个类(我没有查到, 只是猜测), 使用 open 来打开一个文件, 返回一个 IO 的文本包装类, 之后我们使用这个类的方法对它进行操作.
使用文件
- poem = '''\
- Programming is fun
- when the work is done
- if you wanna make your work also fun:
- use Python!
- '''#poem1 ='''liu'''# 读模式 ('r'), 写模式('w') 或追加模式('a').
- # 如果有文件就读取, 没有就创建
- f = open('poem.txt','w')
- #f = open('poem.txt','a')
- f.write(poem)
- #f.write(poem1)
- f.close()
- type(f)
- print(f)
- f = open('poem.txt','r')
- while True:
- line = f.readline()
- if len(line) == 0:
- break
- print(line, end='')
- f.close()
运行结果
如何工作
open 方法第一个参数是你的文件名和路径, 我的文件和程序在同一个文件夹下所以只需要填写文件名即可, 第一个参数后面可以跟很多参数来完成不同的操作, 而且很多参数是由默认值的, 通过我们之前对函数的学习知道这样做的好处.
- open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
- ========= ===============================================================
- Character Meaning
- --------- ---------------------------------------------------------------
- 'r' open for reading (default)
- 'w' open for writing, truncating the file first
- 'x' create a new file and open it for writing
- 'a' open for writing, appending to the end of the file if it exists
- 'b' binary mode
- 't' text mode (default)
- '+' open a disk file for updating (reading and writing)
- 'U' universal newline mode (deprecated)
- ========= ===============================================================
这个 mode 参数是主要的参数, 大家记住这个就可以, mode 参数可以很多个参连在一起使用比如 open('text1.txt','wb')这个就是使用二进制写数据, 一会就会使用到.
这个文件是不用手动创建的, 在你的路径下有这个文件的话, 就会打开这个文件, 如果没有会自动创建这个文件.
读文件的时候使用的是循环读取, 使用包装类的 readline()方法, 读取每一行, 当方法返回 0 时, 表示文件读取完成, 破坏循环条件, 关闭 IO.
自动创建的文件.
储存器
Python 中提供了一个 pickle 模块. 通过这个模块你可以在文件中存储任何 Python 对象, 你又可以从这个文件中吧对象取出. 这被称为持久的存储对象. 还有另一个模块称为 cPickle, 它的功能和 pickle 模块完全相同, 只不过它是用 C 语言编写的, 因此它的速度要快很多(比 pickle 快 1000 倍, Python3 中取消使用). 这里将使用 Pickle 模块.
使用 import...as... 语法可以用 as 后的字符代替 as 前的字符, 模块使用起来更简洁. 将数据保存到打开的文件中就是存储, open 一个文件, 调用模块的 dump 函数, 将数据存到文件中. 使用模块的 load 函数返回存储的对象, 这个过程叫做取存储.
- import pickle as p
- shoplistfile = 'shoplist.data'
- shoplist = ['apple','mango','carrot']
- f = open(shoplistfile,'wb')
- # 将数据写入打开的文件中
- p.dump(shoplist,f)
- f.close()
- del shoplist
- f = open(shoplistfile,'rb')
- storedlist = p.load(f)
- print(storedlist)
- print(__doc__)
运行结果
这里使用的就是二进制的写入, 读取的时候也使用的二进制, 和写入的数据有关, 这个大家多多留意.
Python 的输入与输出就写到这里, 大家多多探索会有更多的知识等待你发掘.
来源: https://www.cnblogs.com/liuhappy/p/10646871.html