IO
input/output
输入:使用python把文本中保存的数据,读入程序中,可以直接处理
输出:写
1.读
open(filename, mode, encoding)
# 不推荐这么写,这么写的话需要显式的关闭IO流
# f = open('aaa.txt', 'r', encoding='utf-8')
# cont = f.read()
# print(cont)
#
#
# f.close()
# 建议使用with关键字
with open('aaa.txt', 'r', encoding='utf-8')as f:
cont = f.read()
print(cont)
1.read()方法,读出文件中的所有内容
2.readline(),每次读一行
3.readlines(),读出文件的所有内容放入列表,列表的每一个元素都是一行的内容
# 建议使用with关键字
with open('aaa.txt', 'r', encoding='utf-8')as f:
# cont = f.read()
# print(cont)
# print(f.readline())
# print(f.readline())
# print(f.readline())
# print(f.readlines())
for line in f.readlines():
# print(line)
info_l = line.strip('\n').split('\t')
print(info_l)
2.写
把程序中的变量值写入文本,持久化
# 写文件
with open('aaa.txt', 'a', encoding='utf-8') as f:
# print(f.read())
f.write('123456')
1.w模式会覆盖原来的文件内容
在开启w模式的文件流的时候覆盖
2.向本来就有内容的文件追加内容
使用append模式 'a'
3.如果不指定以什么模式打开文件,默认为读'r'
4.需求
我们一般在企业开发完算法之后,会经历几部分的测试
1.单元测试
2.本地测试
使用文本读入数据测试,数据量比单元测试大得多
模拟文本:
# 用户对看过的书籍评分
user1 123 5
user23 78 3
...
user1 45 3
user1 123 2 -->不能写入文本
1.用户编号1-2000
2.书籍编号1-5000
3.评分1-5
4.一个用户只能对一本书评分一次
5.模拟数据100W条
import time
import random
start = time.clock()
with open("测试文档.txt", 'w', encoding='utf-8') as f:
a = []
myset = set(a)
for i in range(1000000):
num = random.randint(1, 2000)
book_num = random.randint(1, 5000)
score = random.randint(1, 5)
key = 'user' + str(num) + '\t' + str(book_num)
if myset.isdisjoint(key):
a.append(key)
f.write(key + '\t' + str(score) + '\n')
end = time.clock()
print(end - start)