1.反馈的系统类型
反馈信息是posix:linux操作系统
反馈信息是nt:windows操作系统
2.系统详细信息
import os
print(os.name) 查看操作系统的
打印结果
posix
3.判断文件是否为绝对路径
只能判断是否为绝对路径,不能判断该路径下的目录或文件是否真实存在
import os
print(os.path.isabs('/wenjian/westos')) westos文件实际不存在
打印结果
True
print(os.path.isabs('westos')) 不以绝对路径开头
False
4.生成绝对路径
生成绝对路径
import os
print(os.path.abspath('redhat.jpg'))
打印结果
/root/PycharmProjects/item1/redhat.jpg
指定路径自动拼接
import os
print(os.path.join('/home/root','readhat.jpg'))
打印结果
/home/root/readhat.jpg
点表示当前路径
import os
print(os.path.join(os.path.abspath('.'),'readhat.jpg'))
打印结果
/root/PycharmProjects/item1/readhat.jpg
5.获取目录或者文件名称
import os
filename = '/root/PycharmProjects/item1/readhat.jpg'
print(os.path.basename(filename)) 文件名
print(os.path.dirname(filename)) 目录名
打印结果
readhat.jpg 文件名
/root/PycharmProjects/item1 目录名
6.创建目录
7.删除目录
只能删除空目录
import os
# os.mkdir('westos') 创建空目录
os.rmdir('westos') 删除目录
8.创建文件
8.1删除文件
import os
os.remove('python')
9.文件的重命名
10.判断文件或目录是否存在
import os
print(os.path.exists('img'))
print(os.path.exists('linux'))
打印结果
False不存在
True存在
11.分离目录名和文件名
分离文件名和后缀,不会判断文件是否存在
import os
print(os.path.splitext('hello.yml'))
打印结果
('hello', '.yml')
import os
print(os.path.split('/root/PycharmProjects/item1/readhat.jpg')) 分离目录和文件名
打印结果
('/root/PycharmProjects/item1', 'readhat.jpg')
由于权限有些目录普通用户无法查看
import os
for root,dir,files in os.walk('/var/log'):
print(root) 路径
print(dir) 目录名称
print(files) 文件名称
打印结果
import os
from os.path import join
for root,dir,files in os.walk('/var/log'):
for name in files:
print(join(root,name)) 把路径和名称拼接在一起
打印结果
京东二面笔试题
#1. 生成一个大文件ips.txt,要求1200行, 每行随机为172.25.254.0/24段
的ip;
2. 读取ips.txt文件统计这个文件中ip出现频率排前10的ip;
# 生成1200行ip
def create_ip_file(filename):
ip = ['172.25.254.' + str(i) for i in range(1,255)]
#print(random.sample(ip,1))
with open(filename,'a+') as f:
for i in range(1200):
f.write(random.sample(ip,1)[0] + '\n')
create_ip_file('ips.txt')
# 统计出现总数前十的ip
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 存在自加1
else:
ips_dict[ip] = 1 不存在=1
sorted_ip = sorted(ips_dict.items(),key=lambda x:x[1],reverse=True)[:count]
return sorted_ip
print(sorted_by_ip('ips.txt'))
打印结果
[('172.25.254.100', 35), ('172.25.254.225', 35), ('172.25.254.71', 29), ('172.25.254.80', 29),
('172.25.254.66', 29), ('172.25.254.112', 28),
('172.25.254.101', 28), ('172.25.254.142', 28), ('172.25.254.110', 28), ('172.25.254.72', 28)]
练习:
- 在当前目录新建目录img, 里面包含100个文件, 100个文件名各不>相同(X4G5.png)
- 将当前img目录所有以.png结尾的后缀名改为.jpg.
import random
import os
import string
def gen_code(len=4):
# 随机生存4位验证码
# random.sample返回一个新列表,新列表存放随机所产生的4位验证码
li = random.sample(string.ascii_letters+string.digits,len)
# 拼接为字符串
return '.'.join(li)
def create_files():
# 随即生成100个验证码文件
li = [gen_code() for i in range(100)]
os.mkdir('img')
for i in li:
os.mknod('img/' + i + '.png')
# create_files()
# 已经生成100个文件
def modify_suffix(dirname,old_suffix,new_suffix):
# 查看找,.png结尾的文件并改为.jpg
pngfile = filter(lambda filename: filename.endswith(old_suffix),os.listdir(dirname))
# 分离文件名称和后缀
basefile = [os.path.splitext(filename)[0] for filename in pngfile]
# 文件重命名
for filename in basefile:
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')
生成100个MAC地址并写入文件中,MAC地址前6位(16进制)为01-AF-3B
01-AF-3B
01-AF-3B-xx
01-AF-3B-xx-xx
01-AF-3B-xx-xx-xx
import random
import string string模块中包含所有数字,字母
def create_mac():
MAC = '01-AF-3B'
hex_num = string.hexdigits 生成十六进制数
for i in range(3):
n = random.sample(hex_num,2) 随机选十六进制的数值取两个
sn = '-' + ''.join(n).upper() 任何拼接大写字母
MAC += sn
return MAC
def main(): 定义主函数
with open('mac.txt','w') as f: 使用with写入文件中
for i in range(100): 循环遍历100
mac = create_mac()
print(mac)
f.write(mac + '\n') 换行
main() 调用主函数
查看