python常用方法

1、遍历目录及文件方法

1)根据时间遍历指定目录下的文件

[root@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)))
        # print(dir_list)
        return dir_list

print get_file_list('/logarchive/b2c')

执行 [root@
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为结尾的文件

方法一:
[root@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')

[root@app04 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番茄蛋的博客 - CSDN博客 https://blog.csdn.net/qq_35203425/article/details/80903348

python遍历目录下的所有文件和目录详细介绍 - 修炼之路 - CSDN博客 https://blog.csdn.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()

 

posted @ 2019-06-25 10:10 paul_hch 阅读(...) 评论(...) 编辑 收藏