一 文件操作要求
生成一个文件 ips.txt ,要求120000行,每行随机为172.25.154.0/24段的ip
读取ips.txt文件统计这个文件中ip出现频率排前10的ip
import random
with open('ips.txt', "w") as f:
for i in range(240000):
f.write('172.25.254.' + str(random.randint(1, 254)) + '\n')
from collections import Counter
def most_count(filename='ips.txt', n=10):
with open(filename) as f:
count = Counter(f)
return [i[0].strip() for i in count.most_common(n)]
print(most_count())
二 文件的读取
文件读取三部曲:打开—> 操作—>关闭
1)打开
f=open('/etc/passwd')
print(f)
可以看到,是一个对象,如果要看到其内容,需对其进一步操作
2)操作
content=f.read()
print(content)
通过read来进行对文件的查看
3)关闭
f.close()
关闭文件
4)对文件操作时的权限
open(文件名,权限设置)
如果不对权限进行设置:权限设置默认为 r 权限
此处共有6中权限,分别为:
r:只能执行读的权力,没有写的权力,当读取的文件不存在时,会报错
r+:可以执行读写操作,默认情况下,从文件指针所在位置开始写入,当读取的文件不存在时,会报错
w:只有写入的权限,但是当写入时,会先清空文件内容,当文件不存在时,会生成此文件,不会报错
w+:可以执行读写操作,但是当写入时,会先清空文件内容,当文件不存在时,会生成此文件,不会报错
a:只有写入的权力,写入时,不会清空文件内容,当文件不存在时,会生成此文件,不会报错
a+:可以执行读写的权力,写入时,不会清空文件内容,当文件不存在时,会生成此文件,不会报错
5)判断文件的权限,是否具有读与写的权限
print(f.readable())
print(f.writable())
如果可读或可写的话,返回True,否则,返回False
三 非纯文本文件的读取
如果读取图片, 音乐或者视频(非文本文件), 需要通过二进制的方式进行读取与写入;b
#先对图片进行读取,保存到一个文件中
f1=open('hello.png','rb')
content=f1.read()
f1.close()
#再对新的图片,将该文件内容进行写入复制
f2=open('world.png','wb')
f2.write(content)
f2.close()
可以看到图片world.png的成功建立
四 文件的常用属性
1) suffer(缓冲区对象)
f=open('/mnt/passwd')
#buffer缓冲区对象
print(f.buffer)
suffer就是一个缓冲区对象
那么怎样来对缓冲区的内容进行读取呢
将缓冲区对象赋值给一个变量,通过遍历变量的内容来读取缓冲区的内容
当只是读取文件时, buffer里面没有内容
此时写入的内容在缓冲区里面,并没有真正写入磁盘文件
只有再执行 f.close 的时候,写入的内容才会真正的写入磁盘当中
2) 判断文件对象是否关闭,
用 f.closed 来判断
已经关闭返回True,否则,返回False
3) 文件号
f=open('/mnt/passwd')
print(f.fileno())
文件号为3
4) 文件对象
f=open('/mnt/passwd')
print(f.name)
文件命可以看到为 /mnt/passwd
5) 查看文件对象的相关信息