京东二面笔试题
- 生成一个大文件ips.txt,要求1200行,每行随机为172.25.254.0/24段的ip;
- 读取ips.txt文件统计这个文件中ip出现频率排前10的ip;
代码如下:
import random
def create_ip(filename):
ip = ['172.25.254.' + str(i) for i in range(1,255)]
with open(filename,'a+') as f:
for i in range(1200):
f.write(random.sample(ip,1)[0] + '\n')
create_ip('ips.txt')
def sorted_by_ip(filename,count=10):
ips_dict = dict()
with open(filename) as f:
for ip in f:
ip = ip.strip()
if ip in ips_dict:
ips_dict[ip] += 1
else:
ips_dict[ip] = 1
sorted_ip = sorted(ips_dict.items(),key=lambda x:x[1],reverse=True)[:count]
return sorted_ip
print(sorted_by_ip('ips.txt'))
结果如下:
练习
- 在当前目录新建目录img, 里面包含100个文件, 100个文件名各不相同(X4G5.png)
- 将当前img目录所有以.png结尾的后缀名改为.jpg.
代码如下:
import random
import os
import string
from os.path import splitext
def gen_code(len=4):
li = random.sample(string.ascii_letters+string.digits,len) #随机生成4位验证码
return ''.join(li) #拼接为字符串
# print(gen_code())
def create_files():
li = [gen_code() for i in range(100)] #生成100个验证码
os.mkdir('img')
for i in li:
os.mknod('img/' + i + '.png')
print(create_files())
def modify_suffix(dirname,old_suffix,new_suffix):
#pngfile = [filename for filename in os.listdir(dirname) if filename.endswith(old_suffix)] #找出以png结尾的文件名
pngfile = filter(lambda filename:filename.endswith(old_suffix),os.listdir(dirname))
basefiles = [os.path.splitext(filename)[0] for filename in pngfile] #分离文件名和后缀名
for filename in basefiles:
# print(filename)
oldname = os.path.join(dirname,filename + old_suffix)
newname = os.path.join(dirname,filename + new_suffix)
os.rename(oldname,newname)
print('%s重命名为%s成功' %(oldname,newname))
modify_suffix('img','.png','.jpg')
执行结果: