一、文件操作主要有读r(读写r+)、写w(写读w+)、追加a(追加读a+)几种模式

1、读模式r 读写模式r+
#1、不能写
#2、文件不存在的话会报错
f.open('username.txt',encoding='utf-8')#以读的方式打开文件,windows下要加encoding要不然会报错
#Python3中只有open()
#python2   file() 
print(f.read())#读文件
print(f.readline())#读取一行内容
print(f.readlines())#把文件的每一行放到一个list里面

#读写模式r+
f = open('username.txt','r+',encoding='utf-8')
f.write('test')#可进行写入,文件不存在写入时会报错
#只要沾上r,文件不存在就会报错

2、写模式w 写读模式w+
#1、文件不存在的话,会帮你创建文件
#2、打开一个已经存在的文件,会覆盖以前的内容
#3、不能读

#写读模式
f = open('username.txt','w+',encoding='utf-8')
print(f.read())#读为空
#只要沾上w,都会清空原来的内容

3、追加模式a  追加读模式a+
 f = open('test','a',encoding='utf-8')#追加模式
#1、文件末尾在增加内容
#2、文件不存在的话,会新建文件
#3、打开已经存在的文件,不会清空,末尾增加
#不能读

#追加读模式
f = open('username.txt','a+',encoding='utf-8')
print(f.read())#读不到文件
print(f.write('test'))#可进行写入

二、文件指针:用来记录文件到底读到哪里了

f = open('username.txt',encoding='utf-8')
print('read读的',f.read())#读出文件的所有内容(指针到最后一行)
print('readline读的',f.readline())#readline读不到内容(最后一行无内容)

#文件指针:记录文件读到哪一行
f = open('username.txt','a',encoding='utf-8')#a模式默认文件指针在末尾
f.readline()#指针在末尾所以读不到内容

f = open('username.txt','a+',encoding='utf-8')#a+模式默认文件指针在末尾
f.readline()#指针在末尾所以读不到内容
f.write('test')#可以写入到文件末尾

#a模式默认文件指针在末尾
f.seek(0)#文件指针移动到文件开头
f.write('test')#移动完文件指针后,只能读,写的时候还是在文件末尾写
f.readline()#可以读到内容
#w模式也有指针 但w模式清空内容了,所以指针在最开始

 三、文件小练习,随机生成手机号

import random #引入random模块
#如以1541234开头
#1、先随机产生一些手机号
#2、写到文件里面

#print(random.randint(1,9999))#随机产生一个1到9999之间的数字
#print('1'.zfill(4))#用来补零,如1的话输出值为0001

f = open('phonenum.txt','w',encoding='utf-8')
num = input('请输入你要产生的手机号个数:')
for i in range(int(num)):
    start = '1541234'
    randon_num = str(random.randint(1,9999))
    new_num =random_num.zfill(4)
    phone_num = start+new_num
    f.write(phone_num + '\n')#\n代表换行
f.close()