Python移动指定后缀名的文件
docker>Evan2017年8月8日 (二) 10:55的版本 (→参考)
功能需求
求通过python实现,在指定目录下遍历所有文件,将指定后缀的文件移动到另一指定目录中
最终代码
#!/usr/bin/python #-*- coding: utf-8 -*- #file mvnglog.py evan 记得给权限 # 30 06 * * * /data/mon/mvnglog.py >/dev/null 2>&1 import os,shutil source_dir = '/data/logs/nginx' target_dir = '/data/logs/nginx/oldlog' if not os.path.exists(target_dir): os.makedirs(target_dir, 0755); for root , dirs , files in os.walk(source_dir): for file in files: dirs[:] = [] #忽略当前目录下的子目录分析 不递归 if file.endswith('.gz'): shutil.move( root+os.sep+file, target_dir ) #shutil.copy( root+os.sep+file, target_dir ) #print file
知识点
一开始想到那个可爱的python 有讲到相关的ow.walk os.walk这个某块是遍历一个目录常用的模块,它返回一个包含3个元素的元祖:dirpath,dirnames,filenames.dirpath是以string字符串形式返回该目录下所有的绝对路径;dirnames是以列表list形式返回每一个绝对路径下的文件夹名字;filesnames是以列表list形式返回该路径下所有文件名字。 还写 if os.path.splitext(i)[1] == '.log': 这种笨蛋的写法 #-*- coding: utf-8 -*- import os, shutil target_dir = '/home/evan/test/new' #假定要拷贝到home目录 x = [ item for item in os.walk('/home/evan/test') ] #os.walk递归地遍历所有子文件夹 #返回的是一个list,list中每一个元素由3个部分:(path, dirs, files) for path, dirs, files in x: for file in files: if file.endswith('.gz'): #找到以gz结尾的,copy之 shutil.copy( path+os.sep+file , target_dir ) ##目录源的文件不能已存在,不然会报错 already exists 移动文件(目录) shutil.move("oldpos","newpos") os.sep 可以取代操作系统特定的路径分隔符。windows下为 '\\' 判断文件或目录是否存在: os.path.exists(r"c:\python\hello.py") --> True import os def getFileName(path): ''' 获取指定目录下的所有指定后缀的文件名 ''' f_list = os.listdir(path) # print f_list for i in f_list: # os.path.splitext():分离文件名与扩展名 if os.path.splitext(i)[1] == '.log': print i if __name__ == '__main__': path = '/home/xx/work/ETS/log/1/1' getFileName(path) import os, shutil target_dir = '/home/evan/test/new' #假定要拷贝到home目录 x = [ item for item in os.walk('.') ] #os.walk递归地遍历所有子文件夹 #返回的是一个list,list中每一个元素由3个部分:(path, dirs, files) for path, dirs, files in x: for file in files: if file.endswith('.sh'): #找到以txt结尾的,copy之 shutil.copy( path+os.sep+file , target_dir )
参考
https://zhidao.baidu.com/question/402320802.html
https://docs.python.org/2/library/stdtypes.html
查找指定目录下指定扩展名的文件,可以将信息打印和保存到文件中
在Python中,如何移动文件 Python默认模块 os和shutil 实用函数 shutil — High-level file operations