python 写一个文件分发小程序

下面是详细讲解“python 写一个文件分发小程序”的完整攻略:

1. 思路分析

  • 首先需要读取一个巨型文件目录,这个目录中包含多个文件和子目录,需要依次遍历它们;
  • 判断目录结构中是否有新文件加入,如果有则加入待分发队列中;
  • 对于待分发的文件,需要定时检查目标位置是否已经存在该文件。如果不存在就将它发送到目标位置。
  • 最好使用对象化的开发方式,以便复用代码。

2. 文件目录结构

代码示例:

import os

class Package(object):
    '''包的类'''

    def __init__(self, src, dest):
        self.src = src
        self.dest = dest

    def mkdir(self, path):
        '''创建目录'''
        os.makedirs(path, exist_ok=True)

    def copy(self, path):
        '''复制文件'''
        print("正在复制文件 %s 至 %s" % (self.src, path))

    def start(self):
        '''开始分发'''
        self.mkdir(self.dest)
        self.copy(self.dest)

3. 功能开发

代码示例:

import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

class WatchDog(FileSystemEventHandler):
    '''文件监听类'''

    def __init__(self, root):
        self.root = root

    def get_package(self, src, dest):
        '''生成包'''
        return Package(src, dest)

    def on_created(self, event):
        '''文件创建'''
        if os.path.isdir(event.src_path):
            print("检测到新目录: %s" % event.src_path)
        else:
            print("检测到新文件: %s" % event.src_path)
            file_ext = os.path.splitext(event.src_path)[1]
            if file_ext == ".txt":
                package = self.get_package(event.src_path, "/tmp/")
                package.start()

def run():
    '''运行程序'''
    observer = Observer()
    observer.schedule(WatchDog("/data/"), "/data", True)
    observer.start()

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()

    observer.join()

4. 示例说明

当程序运行时,它会查找指定的源目录。如果有新的文本文件添加到该目录中,程序会生成一个新的 Package 对象,然后将该对象添加到待处理队列中。

假设我们现在有一个名为 /data/ 的目录,里面有一个文本文件 test.txt。当我们启动程序时,它会找到该文件,然后将其复制到 /tmp/ 目录。

另一种示例是,当新目录被添加进 /data/ 目录时,程序也会检测到该事件。在这种情况下,程序会在日志中输出相应信息并继续运行。

以上就是“python 写一个文件分发小程序”的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 写一个文件分发小程序 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • django 中使用DateTime常用的时间查询方式

    下面是关于 Django 中使用 DateTime 常用的时间查询方式的完整攻略。 1. DateTime 常用查询方式 Django 中使用 DateTimeField 存储时间信息,而对于该类型的字段,我们经常需要进行基于时间的查询。以下是常用的时间查询方式: 1.1. 精确匹配查询 # 查询某个特定时间 from django.utils import…

    python 2023年6月2日
    00
  • python多维数组分位数的求取方式

    题目要求我们解决的是python多维数组分位数的求取问题。在解决这个问题之前,需要了解一些相关的背景知识。 相关背景知识 什么是多维数组 多维数组,又称为矩阵或张量,是一种存储数据的方式。在Python中,多维数组可以使用NumPy库来创建和操作。 什么是分位数 分位数是指把一组数据分成若干等份的数值点。常见的分位数有三个,即第一四分位数(又称为下四分位数)…

    python 2023年6月5日
    00
  • python实现随机密码字典生成器示例

    接下来我将详细讲解如何使用Python编写随机密码字典生成器。 1. 随机密码生成器 我们可以使用Python自带的secrets库来生成随机的密码字典。具体的操作步骤如下: 导入secrets库 import secrets 设置生成密码字典的长度和字符集;一般常用的字符集有数字、小写字母、大写字母和特殊字符等。 alphabet = "0123…

    python 2023年5月13日
    00
  • Python利用open函数读写文件的示例详解

    下面我来详细讲解“Python利用open函数读写文件的示例详解”的完整攻略。 1. 什么是open函数? 在Python中,操作文件通常需要使用内置函数open()来打开一个文件,并返回一个表示文件的对象。open()函数的基本语法如下: open(file, mode=’r’, buffering=-1, encoding=None, errors=No…

    python 2023年6月5日
    00
  • python使用SimpleXMLRPCServer实现简单的rpc过程

    下面是 Python 使用 SimpleXMLRPCServer 实现简单的 RPC 过程的完整攻略: 一、什么是 RPC RPC(Remote Procedure Call)即远程过程调用,是一种计算机通信协议。在分布式应用中,存在很多需要进行远程调用的场景,如用户鉴权、数据传输等。 RPC 主要涉及两个过程: 远程过程调用程序 本地过程调用程序 RPC …

    python 2023年6月3日
    00
  • python数据类型强制转换实例详解

    Python数据类型强制转换实例详解 在Python中,数据类型之间的转换是一个重要的概念。Python提供了很多数据类型强制转换的函数来完成不同类型数据之间的转化。本文将详细介绍数据类型强制转换的实例,包括字符串、数字、列表、元组和字典等常见数据类型的转换。 字符串转整型 在Python中,我们可以使用int()函数将字符串转换为整型。若字符串不能被正确转…

    python 2023年5月14日
    00
  • ubuntu下让python脚本可直接运行的实现方法

    下面是详细讲解Ubuntu下让Python脚本可直接运行的实现方法的完整攻略。 背景 在 Ubuntu 系统中,我们可以通过命令行的方式执行 Python 脚本。但是,每次需要在终端中输入完整的 Python 命令,非常繁琐。如果能让 Python 脚本像可执行文件一样直接在终端中执行,那么就会非常方便。 实现方法 让 Python 脚本可直接运行,其实就是…

    python 2023年5月13日
    00
  • 浅谈python中截取字符函数strip,lstrip,rstrip

    浅谈Python中截取字符函数strip,lstrip,rstrip Python中提供了三种截取字符串的方法:strip、lstrip和rstrip。 strip strip函数可以截取掉字符串两端的指定字符,默认是空格。常用于数据清洗和整理。下面是使用示例: text = ‘ hello ‘ print(text.strip()) # 输出 ‘hello…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部