文本文件


1.建立文件

Build_new_file.py
newfile=r'C:\Users\86176\Desktop\BOOK\1.txt'    #定义需要建立的文本文件和路径
b_new_file = open(newfile,'w')                  #用open函数定义一个新的文本文件
b_new_file.close()                              #用close()方法关闭新建的文件
print("%s成功建立!"%(newfile))

#C:\Users\86176\Desktop\BOOK\1.txt成功建立!

如果不关闭新建立的文本文件,则打开的文件对象一直留在内存中容易出现内存溢出等错误.

2.读写文件

rw_new_f
newfile=r'C:\Users\86176\Desktop\BOOK\1.txt'        #指定需要建立或打开的文本名称和路径
b_new_file = open(newfile,'w')                      #用w模式打开文件
t_n=b_new_file.write('I am mori')
b_new_file.close()
print("往文件里写入了%d字节内容"%(t_n))

b_new_file=open(newfile,'r+')            #以只读方式打开1.txt文件
tt=b_new_file.read()                    #用文件对象.read()方法读取内容
print(tt)
t_n=b_new_file.write('\n 是的,是我!')     #继续写入新内容
b_new_file.close()
print("往文件里写入了%d字节内容"%(t_n))
print(t_n)

# 往文件里写入了9字节内容
# I am mori
# 往文件里写入了8字节内容

连续用read()方法,write()方法操作文件

3.一次写入多行

nums=['one','two','three','four','five','six','seven']
t=open(r'C:\Users\86176\Desktop\BOOK\1.txt','a')
for get_one in nums:
    t.write(get_one+'\n')
t.close()
print('连续写入完成')

windows系统下一行结束\r\n unix系统下是\n Macintosh操作系统下是\r

4.读取

t=open(r'C:\Users\86176\Desktop\BOOK\1.txt','r')
dd=1
while dd:
    dd = t.readline()    #一次读一行
    print(dd)

t=open(r'C:\Users\86176\Desktop\BOOK\1.txt','r')
L_s=t.readlines()            #以列表格式读取多行
print(L_s)

5.连续读特定字节数量的内容

6.指定位置读内容

f=open(r'C:\Users\86176\Desktop\BOOK\1.txt','r')
print(f.readline(2))        #第一次读取文件头两个字节
print(f.readline())         #继续读取同一行剩余字节
print(f.read(4))            #继续读取4个字节
print(f.read(4))            #继续读取4个字节
print(f.tell())             #获取↑执行后的当前位置
print(f.read(1))            #继续读一个字节
print(f.tell())             #当前位置

#=======================执行结果
# on
# e
# 
# two
# 
# thre
# 14
# e
# 15

f.seek(offset[,whence])

f代表已打开的文件,seek()方法重新指定将要读写的当前位置.
offset参数设置位置的偏移量的字节数
whence参数可选,确定文件起计位置,
默认值为SEEK_SET(或0),代表从文件的开始位置+偏移量来确定当前位置
SEEK_CUR(或1),代表当前位置起计
SEEK_END代表从文件的结尾起计

在前面的基础下继续执行以下代码

f=open(r'C:\Users\86176\Desktop\BOOK\1.txt','w')
print(f.seek(17))
f.write('---')      #执行后打开文件发现其他内容都丢失,只能在第17字节处发现新写入的---

f.close()