5.4 Python字典的孪生兄弟之集合
- 1.文件
- 2.文件对象方法
- 1)f.close() 关闭文件
- 2)f.read([size=-1]) 从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回
- 3)f.readline([size=-1]) 从文件中读取并返回一行(包括行结束符),如果有size有定义则返回size个字符
- 4)f.write(str) 将字符串str写入文件
- 5)f.writelines(seq) 向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象
- 6)f.seek(offset, from) 在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
- 7)f.tell() 返回当前在文件中的位置(指针位置)
- 8)f.truncate([size=file.tell()]) 截取文件到size个字节,默认是截取到文件指针当前位置
- 3. 文件的写入
#对文件的处理
输入–> 处理–> 输出
前面很多讲中,我们很好的处理数据,然后打印输出结果
即input()和print()获取和打印
1.文件
.exe .txt .ppt .jpg .mp4 .avi
1. open() 打开文件
可以使用 help(open)来查看文档
open(file, mode='r', buffering=-1, encoding=None,
errors=None, newline=None, closefd=True, opener=None)
file是文件名, mode即为打开模式,
2.打开模式:
1)‘r’ 以只读方式打开文件(默认)
2)‘w’ 以写入方式打开文件,会覆盖已存在的文件,不存在会创建
3)‘x’ 如果文件已经存在,使用此模式打开将引发异常
4)‘a’ 以写入模式打开,如果文件存在,则再末尾追加写入
5)‘b’ 以二进制模式打开文件
6)‘t’ 以文本模式打开(默认)
7)’+’ 可读写模式(可添加到其他模式使用)
8)‘U’ 通用换行符支持
打开此文件夹下的1st.py
f = open('test.txt',encoding='utf-8')
print(f)
#打印出以下格式
#<_io.TextIOWrapper name='D:\\Project\\python\\1st.py' mode='r' encoding='cp936'>
2.文件对象方法
#文件对象方法 执行操作
1)f.close() 关闭文件
在C语言的程序中,在打开文件操作完后,一定得记得关闭文件,
在python语言中,由于存在垃圾回收机制,可以不必关闭文件
但并不是说不用关闭文件,在完成写入之后,需要关闭文件,因为python会缓存写入的数据,如果中途
断电,缓存的数据不会写入文件中
2)f.read([size=-1]) 从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回
print(f.read()) #打印文件内的所有信息
print(f.read()) #再次读取,则打印空行
f.close() #关闭文件
f = open('test.txt',encoding='utf-8')
print(f.read(5)) #打印读取的前五个字符
#这时候的文件指针在第五个字符的位置
print(f.tell()) #打印5 告诉我们当前位置在5
对于有中文字符的来说,一个中文代表两个字节,这里并不是对等
f.close()
f = open('test.txt',encoding='utf-8')
print(f.read(15)) #打印读取的前15个字符
print(f.tell()) #打印16 告诉我们当前位置在16
3)f.readline([size=-1]) 从文件中读取并返回一行(包括行结束符),如果有size有定义则返回size个字符
4)f.write(str) 将字符串str写入文件
5)f.writelines(seq) 向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象
6)f.seek(offset, from) 在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
7)f.tell() 返回当前在文件中的位置(指针位置)
8)f.truncate([size=file.tell()]) 截取文件到size个字节,默认是截取到文件指针当前位置
print("seek()方法")
f.close()
f = open('test.txt',encoding='utf-8')
print(f.seek(15,0)) # 从文件开头开始,指针在25的位置
print(f.readline()) #从文件中读取的是
print(list(f)) #讲文件转化为列表,每一行为一个元素
f.seek(0,0)
lines = list(f)
for each_line in lines:
print(each_line)
#这样的效率很低,尤其对于数据很长的时候
#可以直接使用
f.seek(0,0) #指针返回文件开头
for each_lin in f:
print(each_lin)
3. 文件的写入
写入文件时,必须确保在打开模式中有可写入的模式
f.write(‘I love you’) #报错,不可写入
f1 = open('test1.txt','w') #没有文件则创建
print(f1.write('I love you')) #返回的是写入几个字符 打印10
f1.close()#关闭才会写入字符串,没有关闭,则会放在python的缓冲区里