移动文件到由最后修改日期组成的目录下

转:
移动文件到由最后修改日期组成的目录下 [/b
]这个脚本的功能如下:
移动文件到由最后修改日期组成的目录下
例如:test.txt 创建于 2011/06/03, 那么它将被移动到 2011/06 目录下

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""移动文件到相应日期目录下。
例如:test.txt 最后修改时间:2011/06/03
移动到目录 2011/06 下
"""

import os
import time

#生成器
def file_paths(dir_path):
    """生成器-查找目录下的文件
    """
    for root, dirs, files in os.walk(dir_path):
        dirs[:] = [] # 忽略子目录
        for f in files:
            yield os.path.join(root, f)

def move_file(file_path):
    """移动文件到相应的日期目录下
    """
  1. if os.path.isdir(file_path):
  2.         for f in file_paths(file_path):
  3.             move_file(f)
  4.     elif  os.path.isfile(file_path):
  5.         date_time  = time.strftime('%Y/%m',time.localtime(
  6.                  os.path.getmtime(file_path)  # 文件最后修改时间
  7.                  ))
  8.         dirname = os.path.dirname(file_path)
  9.         basename = os.path.basename(file_path)
  10.         new_filepath = os.path.join(dirname, date_time, basename)
  11.         os.renames(file_path, new_filepath)

  12. def main():
  13.     filepath = raw_input("please input the file or dir path:")
  14.     move_file(filepath)

  15. if __name__ == '__main__':
  16.     main()
复制代码

作者: 三里屯摇滚   发布时间: 2011-06-04

回复 三里屯摇滚


QUOTE:
def file_paths(dir_path):
    """生成器-查找目录下的文件
    """
    for root, dirs, files in os.walk(dir_path):
        dirs[:] = [] # 忽略子目录
        for f in files:
            yield os.path.join(root, f) ...
三里屯摇滚 发表于 2011-06-04 16:25


os.walk()返回的本来就是一个生成器,这不是多此一举么。

作者: 106033177   发布时间: 2011-06-04