首页 > 解决方案 > 将最旧的 1000 个文件移动到另一个目录的 Python 脚本

问题描述

这是我的代码,它从配置文件中读取输入并根据条件将文件移动到另一个目录并将信息记录到日志文件中

import shutil
import configparser
import logging.handlers
import os

#Reading the input configuration

config = configparser.ConfigParser()
config.read("config_input.ini")
src_filepath = (config.get("Configuration Inputs","src_filepath"))
dst_filepath = (config.get("Configuration Inputs","dst_filepath"))
log_file_name = (config.get("Configuration Inputs","log_file_name"))
file_limit = int((config.get("Configuration Inputs","file_limit")))

if not os.path.exists (dst_filepath):
    os.makedirs(dst_filepath)
onlyfiles_in_dst = next ( os.walk ( dst_filepath ) ) [ 2 ]
file_count_indst = len ( onlyfiles_in_dst )
onlyfiles_in_src = next ( os.walk ( src_filepath ) ) [ 2 ]
file_count_insrc = len ( onlyfiles_in_src )

def sorted_ls(src_filepath):
    mtime = lambda f: os.stat(os.path.join(src_filepath, f)).st_mtime
    return list(sorted(os.listdir(src_filepath), key=mtime))

move_list = sorted_ls(src_filepath)
#print (move_list)
if file_count_indst < file_limit:
    for mfile in move_list:
        shutil.move(src_filepath + '\\' + mfile, dst_filepath)

**#Logging everything**
logger = logging.getLogger()
logging.basicConfig(filename=log_file_name, format='%(asctime)s %(message)s', filemode='a')
logger.setLevel(logging.INFO)
logger.info('Number of files moved from source ' + str(len(move_list)))

但问题是我只想将 1000 个文件从源移动到目标。就像是

ls -lrt| 头部 ls -lrt | 头部 -n 1000

当我在 Windows 平台上运行此脚本时,我无法做到这一点。请提出一个正确的方法来做到这一点。另外请建议我如何将它放在用户定义的类下,并且可以在其他程序中使用。

标签: python-3.x

解决方案


一个简单的计数器不能成为解决方案吗?

if file_count_indst < file_limit:
    count=0;
    for mfile in move_list:
        shutil.move(src_filepath + '\\' + mfile, dst_filepath)
        count = count +1
        if count==1000:
            break

推荐阅读