python常用方法
1、遍历目录及文件方法
1)根据时间遍历指定目录下的文件
[[email protected] b2c]# cat file_list.py #!/usr/bin/env python # coding: utf-8 import os def get_file_list(file_path): dir_list = os.listdir(file_path) if not dir_list: return else: # 注意,这里使用lambda表达式,将文件按照最后修改时间顺序升序排列 # os.path.getmtime() 函数是获取文件最后修改时间 # os.path.getctime() 函数是获取文件最后创建时间 dir_list = sorted(dir_list, key=lambda x: os.path.getmtime(os.path.join(file_path, x))) # print(dir_list) return dir_list print get_file_list('/logarchive/b2c')
执行 [[email protected]04 b2c]# python file_list.py ['2019-05-29.log', '2019-05-30.log', 'b2c_input.py', '2019-05-31.log', '2019-06-01.log', '2019-06-02.log', '2019-06-03.log', '2019-06-04.log', '2019-06-05.log', '2019-06-06.log', '2019-06-07.log', '2019-06-08.log', '2019-06-09.log', '2019-06-10.log', '2019-06-11.log', '2019-06-12.log', '2019-06-13.log', '2019-06-14.log', '2019-06-15.log', '2019-06-16.log', '2019-06-17.log', '2019-06-18.log', '2019-06-19.log', '2019-06-20.log', '2019-06-21.log', '2019-06-22.log', '2019-06-23.log', '2019-06-24.log', 'file.py', 'file_list.py']
2)如果过滤以log为结尾的文件
方法一: [[email protected]04 b2c]# cat file_list.py #!/usr/bin/env python # coding: utf-8 import os def get_file_list(file_path): dir_list = os.listdir(file_path) if not dir_list: return else: # 注意,这里使用lambda表达式,将文件按照最后修改时间顺序升序排列 # os.path.getmtime() 函数是获取文件最后修改时间 # os.path.getctime() 函数是获取文件最后创建时间 dir_list = sorted(dir_list, key=lambda x: os.path.getmtime(os.path.join(file_path, x))) for filename in dir_list: if filename.endswith(".log"): print filename get_file_list('/logarchive/b2c') [[email protected] b2c]# python file_list.py 2019-05-29.log 2019-05-30.log 2019-05-31.log 2019-06-01.log 2019-06-02.log 2019-06-03.log 2019-06-04.log 2019-06-05.log 2019-06-06.log 2019-06-07.log 2019-06-08.log 2019-06-09.log 2019-06-10.log 2019-06-11.log 2019-06-12.log 2019-06-13.log 2019-06-14.log 2019-06-15.log 2019-06-16.log 2019-06-17.log 2019-06-18.log 2019-06-19.log 2019-06-20.log 2019-06-21.log 2019-06-22.log 2019-06-23.log 2019-06-24.log 方法二: #!/usr/bin/env python # coding: utf-8 import os, glob, time # 定义要清理文件的目录 root = '/logarchive/b2c' _list = [] for folder in glob.glob(root): for _log_name in glob.glob(folder + '/*.log'): _list.append(_log_name) filelist = sorted(_list) for log_name in filelist: print log_name f = open(log_name, 'r') content = f.readlines() f.close() _time = [] for item in content: time = int(item.strip().split('>>>')[-1].split('ms')[0]) _time.append(time) access_time = sorted(_time) print("b2c 运价访问时间:") print("min: %s ms"% access_time[0]) print("max: %s ms"% access_time[-1]) sum = 0 access_count = len(_time) for i in _time: sum += i avg = sum/access_count print("avg: %s ms" % avg) print '-'*50 print filelist
3)网上收集的其他方法,python 过滤出某后缀名文件
方法1:
import glob import os os.chdir(“./”) for file in glob.glob(“*.py”): print file
方法2:
for file in os.listdir(“./”): if file.endswith(“.py”): print file
方法3:
for root, dirs, files in os.walk(“./”): for file in files: if file.endswith(“.py”): print os.path.join(root, file)
4) os.walk()方法
import os def all_path(dirname): result = []#所有的文件 for maindir, subdir, file_name_list in os.walk(dirname): print("1:",maindir) #当前主目录 print("2:",subdir) #当前主目录下的所有目录 print("3:",file_name_list) #当前主目录下的所有文件 for filename in file_name_list: apath = os.path.join(maindir, filename)#合并成一个完整路径 result.append(apath) return result print(all_path("E:\myTest"))
5) python遍历目录下的所有文件和目录
目录结构如下图: test---a------d------g--------g.txt test---a------d------a.txt test---a------e --------b --------c --------1.txt --------2.txt
一、使用os.walk遍历所有的目录和文件 1、获取test目录下的所有文件 for root,dirs,files in os.walk(r"D:\test"): for file in files: #获取文件所属目录 print(root) #获取文件路径 print(os.path.join(root,file))
2、获取test目录下的所有目录 for root,dirs,files in os.walk(r"D:\test"): for dir in dirs: #获取目录的名称 print(dir) #获取目录的路径 print(os.path.join(root,dir))
二、利用os.listdir递归获取所有的目录路径和文件路径 def get_file_path(root_path,file_list,dir_list): #获取该目录下所有的文件名称和目录名称 dir_or_files = os.listdir(root_path) for dir_file in dir_or_files: #获取目录或者文件的路径 dir_file_path = os.path.join(root_path,dir_file) #判断该路径为文件还是路径 if os.path.isdir(dir_file_path): dir_list.append(dir_file_path) #递归获取所有文件和目录的路径 get_file_path(dir_file_path,file_list,dir_list) else: file_list.append(dir_file_path) if __name__ == "__main__": #根目录路径 root_path = r"D:\test" #用来存放所有的文件路径 file_list = [] #用来存放所有的目录路径 dir_list = [] get_file_path(root_path,file_list,dir_list) print(file_list) print(dir_list)
转自
python 过滤出某后缀名文件 - 快乐多巴胺 - 博客园 https://www.cnblogs.com/pscc/p/10122517.html
python按时间排序目录下的文件 - Mr番茄蛋的博客 - ****博客 https://blog.****.net/qq_35203425/article/details/80903348
python遍历目录下的所有文件和目录详细介绍 - 修炼之路 - ****博客 https://blog.****.net/sinat_29957455/article/details/82778306
2、时间datetime、time模块
# 时间格式转换 time.strftime('%Y-%m-%d %H:%M:%S') '2016-11-12 01:20:54' # 获取昨天日期 >>> date.today() - timedelta(days=1) datetime.date(2016, 11, 11) >>> date.isoformat(date.today() - timedelta(days=1)) '2016-11-11' # 获取明天日期 >>> date.today() + timedelta(days=1) datetime.date(2016, 11, 13) >>> date.isoformat(date.today() + timedelta(days=1)) '2016-11-13'
3、多进程
from multiprocessing import Pool, current_process import urllib2 urls = [ 'http://www.baidu.com', 'http://www.jd1.com', 'http://www.sina.com', 'http://www.163.com', ] def status_code(url): print( 'process name:', current_process().name) try: req = urllib2.urlopen(url, timeout=2) return req.getcode() except urllib2.URLError: return p = Pool(processes=4) for url in urls: r = p.apply_async(status_code, args=(url,)) #print r.get() #if r.get(timeout=1) == 200: if r.get() == 200: print("%s OK" %url) else: print("%s NO" %url)
转自 博客地址:http://lizhenliang.blog.51cto.com and https://yq.aliyun.com/u/lizhenliang
4、如果文件不存在就创建
if not os.path.exists('host_info'): f = open('host_info', 'w') f.close()