模块-os模块/random模块/datetime模块/写日志
一、获取当前目录的路径
os.path.abspath('.')# 取绝对路径
os.getcwd()# 取当前路径
.代表当前目录 ..上一级目录 ../..
二、执行操作系统命令
1.os.system()
os.system('ipconfig') # 用来执行操作系统命令,但是只能帮你执行,获取不到结果;执行后会出现黑色乱码显示
# res = os.system('ipconfig') # # 用来执行操作系统命令,但是只能帮你执行,获取不到结果 # print(res)# 输出为0 # 输出0,则执行成功;输出1,则执行失败 res = os.system('haha') print(res)# 输出为1
2.os.popen()
用来执行操作系统命令,并可以获取到结果
res = os.popen('ipconfig') # 用来执行操作系统命令,并能够获取到结果 print(res) # 运行结果:<os._wrap_close object at 0x00000000006BB9B0>
res = os.popen('ipconfig').read() # 用来执行操作系统命令,并能够获取到结果 print(res) # 运行结果: # Windows IP 配置 # # # 以太网适配器 Bluetooth 网络连接: # # 媒体状态 . . . . . . . . . . . . : 媒体已断开 # 连接特定的 DNS 后缀 . . . . . . . : # # 以太网适配器 本地连接: # # 连接特定的 DNS 后缀 . . . . . . . : # 本地链接 IPv6 地址. . . . . . . . : fe80::48f:a39e:32b4:b578%12 # IPv4 地址 . . . . . . . . . . . . : ***.**.**.*** # 子网掩码 . . . . . . . . . . . . : 255.255.255.0 # 默认网关. . . . . . . . . . . . . : ***.**.**.254 # # 无线局域网适配器 无线网络连接: # # 媒体状态 . . . . . . . . . . . . : 媒体已断开 # 连接特定的 DNS 后缀 . . . . . . . : # # 隧道适配器 isatap.{012DAA49-8300-457F-9416-9BF1E07478C0}: # # 媒体状态 . . . . . . . . . . . . : 媒体已断开 # 连接特定的 DNS 后缀 . . . . . . . : # # 隧道适配器 本地连接* 3: # # 连接特定的 DNS 后缀 . . . . . . . : # IPv6 地址 . . . . . . . . . . . . : 2001:0:ca6a:c727:1816:d57:53ef:f484 # 本地链接 IPv6 地址. . . . . . . . : fe80::1816:d57:53ef:f484%20 # 默认网关. . . . . . . . . . . . . : :: # # 隧道适配器 isatap.{402A9BB8-4D45-4970-917B-73E513B03EAE}: # # 媒体状态 . . . . . . . . . . . . : 媒体已断开 # 连接特定的 DNS 后缀 . . . . . . . : # # 隧道适配器 isatap.{832D9784-4EEB-4977-80DF-9E9F5740B3C3}: # # 媒体状态 . . . . . . . . . . . . : 媒体已断开 # 连接特定的 DNS 后缀 . . . . . . . :
3. os.listdir() 获取某个目录下的内容
print(os.listdir('D:\py-tmz-master') ) #['tmz-code-master', 'tmz-code-master.zip']
4.os.mkdir() 新建目录
os.mkdir('python') os.mkdir('python/day2')# 创建多级目录,要有父目录,否则会报错
5.os.makedirs() 新建目录,父目录不存在的时候,会创建父目录
os.makedirs('java/day1') os.makedirs('java/day2')
6. os.remove() 删除文件,不能删除文件夹
os.remove('python') #删除文件,不能删除文件夹
7. os.rmdir() 删除空文件夹
os.rmdir('java')#删除空文件夹的
8. os.rename() 重命名文件或文件夹
os.rename('java','python') #重命名,文件和文件夹都可以
9. os.getcwd() 获取当前目录路径
print(os.getcwd())#获取当前所在的目录
10. os.chdir() 进入到某个目录里面
os.chdir('/Users/nhy/PycharmProjects/tmz-code')#进入到某个目录里面
11. os.environ 获取系统环境变量的配置内容
print(os.environ)#获取系统环境变量里面配置的内容
12.
# os.path.join() # 拼接路径 # os.path.abspath() # 把相对路径,转换成绝对路径 # os.path.dirname() # 取父目录 # os.walk()
拼接路径:
p = 'e:'+os.path.sep+'movies'+os.path.sep+'欧美大片' print(p) # e:\movies\欧美大片 print(os.path.join('e:','movies','欧美大片','复仇者联盟.mp4')) # e:movies\欧美大片\复仇者联盟.mp4
把相对路径转换成绝对路径:
print(os.path.abspath(r'../day4/a.json')) #把相对路径,转换成绝对路径 #/Users/nhy/PycharmProjects/tmz-code/day4/a.json
取父目录:
print(os.path.dirname(r'/Users/nhy/PycharmProjects/tmz-code/day4/a.json') )#取父目录
#/Users/nhy/PycharmProjects/tmz-code/day4
13.
# print(os.path.sep)#当前系统的路径分隔符 # print(os.path.isfile('a.py')) #是否为文件 # print(os.path.isdir('a.py')) #是否为文件夹 # print(os.path.exists('a.py')) #文件/文件夹是否存在 # print(os.path.getsize('a.py')) #获取大小 # print(os.path.getctime('a.py')) #创建时间 # print(os.path.getmtime('a.py')) #修改时间 # print(os.path.getatime('a.py')) #最后一个访问时间
14. os.path.split() 分隔路径和文件名
print(os.path.split('/Users/nhy/PycharmProjects/tmz-code/day5/a.py')) #分隔路径和文件名的
15.小例子:
for cur_path,dirs,files in os.walk(r'/Users/nhy/'): print('当前在%s目录下查找'%cur_path) for file in files: if file.endswith('.mp4') or file.endswith('.avi'): print('发现视频文件在%s目录下'%cur_path) break
三、random模块
import random print(random.random()) #取小于1的随机小数 print(random.randint(1,10))# 指定范围(包含10)[1,10],取随机的整数 s = 'abcdefgh' print(random.choice(s))# 随机选择一个,只能选择一个 print(random.sample(s,4))# 随机选择N个值,输入4,则随机选择4个,放在list中 print(random.uniform(8.8,9.9))# 指定一个范围,然后取随机小数
# print(random.choice(string.ascii_lowercase))#随机选择一个元素 # print(random.sample(string.ascii_lowercase,4)) # # l=[random.choice(string.digits) for i in range(6)] # l2 = random.sample(string.digits,6) #取的这几个元素里面,它不会有重复的 # # print(''.join(l)) # print(''.join(l2))
random.shuffle() 打乱顺序
l = [1,2,3,4,5,6,7,8] print('打乱之前的',l) random.shuffle(l) print('打乱之后的',l) # 打乱之前的 [1, 2, 3, 4, 5, 6, 7, 8] # 打乱之后的 [3, 8, 4, 5, 6, 1, 2, 7]
四、datetime模块
import datetime print(datetime.date.today()) # 2018-07-12,当天的日期,只有日期 print(datetime.datetime.today()) # 2018-07-12 19:22:28.911401,当天的时间,有日期有时间 date = datetime.date.today() + datetime.timedelta(-10)# 写负数,则为几天前;写正数,则为几天后。默认单位为天 print(date) res = datetime.datetime.today() + datetime.timedelta(hours=-8,minutes=-20)# 写负数,则为几个小时前;写正数,则为几小时后。默认单位为天 print(res.time())# 只取到时间 print(res.date())# 只取到日期 print(res.timestamp())# 时间戳 print(res.strftime('%Y-%m %H:%M:%S'))# 取到格式化好的时间
五、写日志
import nnlog my_log = nnlog.Logger('abc.log',level='debug',when='S',backCount=5) # level默认级别为debug;when按天生成日志,默认为天;backCount=5,最多保留五个,默认为五个 # debug # info # warning # error my_log.debug('这是debug的') my_log.info('info级别的') my_log.warning('warning级别的') my_log.error('error级别的')
六、造日志的脚本:
def timestamp_to_str(timestamp=None,format='%Y-%m-%d %H:%M:%S'): '''时间戳转格式化好的时间,如果没有传时间戳,就获取当前的格式化时间''' if timestamp: time_tuple = time.localtime(timestamp) #把时间戳转成时间元组 result = time.strftime(format,time_tuple) #把时间元组转成格式化好的时间 return result else: return time.strftime(format) import time,os,random l = ['ios','android','nginx','tomcat','python','blog','apache','mysql','redis'] for i in l: p = os.path.join('logs',i) os.makedirs(p) for j in range(30): t = int(time.time())-86400*j time_str = timestamp_to_str(t,'%Y-%m-%d') log_name = '%s_%s.log'%(i,time_str) abs_file_path = os.path.join('logs',i,log_name) fw = open(abs_file_path, 'w', encoding='utf-8') if random.randint(1,10)%2==0: fw.write('胜多负少防守打法双方都') fw.close()
七、
s='235423236236' result = sorted(s,reverse=True) print(result) # ['6', '6', '5', '4', '3', '3', '3', '3', '2', '2', '2', '2']
# vs = sorted(d.values(),reverse=True) # for v in vs: # for key,value in d.items(): # if v==value: # print(key,v) def get_value(x): return x[1] d = { 'fd':100, 'ds':93, 'lhy':88, 'hzy':35 } result = sorted(d.items(),key=lambda x:x[1],reverse=True) # result = sorted(d.items(),key=get_value,reverse=True) print(result) #[('fd', 100), ('ds', 93), ('lhy', 88), ('hzy', 35)]