Python移动指定后缀名的文件
功能需求
求通过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