Python写的一个收集文件的小程序

import os
import shutil
import re

class CollectFile:
    def __init__(self, source, dest, types, explict=None):
        self.source = source 
        self.types = tuple(types)
        self.dest = dest
        self.explict = tuple(explict)
        self.explict = '|'.join(explict)
            
    def _move(self, arg, dirname, fnames):
        if re.search(self.explict, dirname):
            return
        for fname in fnames:
            if fname.endswith(self.types):
                src = dirname+'\\'+fname
                shutil.move(src, self.dest) 

    def _copy(self, arg, dirname, fnames):
        if re.search(self.explict, dirname):
            return
        for fname in fnames:
            if fname.endswith(self.types):
                src = dirname+'\\'+fname
                shutil.copy(src, self.dest) 

    def run(self, method):
        if method == 'move':
            os.path.walk(self.source, self._move, None)
        elif method == 'copy':
            os.path.walk(self.source, self._copy, None)
        else:
            raise TypeError('function --run-- parameter wrong')

if __name__ == '__main__':
    print '''
        Collect File program
        Author:p1usj4de
        Notice:Mutiple input split with blank
    '''
    
    source_dir = raw_input('source dir(default d:\\):')
    dest_dir = raw_input('dest dir(default source dir):')
    method = raw_input('you want to \'move\' or \'copy\'(default move)?')
    types = raw_input('types (default movies):')
    explict_dirs = raw_input('explict dirs(default movie,media and lin):')

    if source_dir == '':
        source_dir = 'd:\\'

    if types != '':
        types = types.split(' ')
    else:
        types = ('mp4', 'avi', 'rmvb', 'wmv')

    if dest_dir == '':
        dest_dir = source_dir

    if explict_dirs == '':
        explict_dirs = ('movie','media','lin')
    else:
        explict_dirs = explict_dirs.split(' ')

    if method == '':
        method = 'move'
        
    cf = CollectFile(source_dir, dest_dir, types=types, explict=explict_dirs)
    cf.run(method)


没啥难点的,主要就是调用os.path.walk和shutil模块。其中值得注意的就是shutil.copyfile的dest必须是文件名,而copy的dest可以是文件夹。另外在自定义的文件遍历函数中,def _move(self, arg, dirname, fnames)中dirname是不带最后的斜杠的,也就是说要表达source的话必须写成,dirname+'\\'+fname。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
地下水位是指地下水面相对于地面的深度。编一个能计算地下水位的小程序可以帮助我们了解地下水资源的分布情况,以及对地下水进行科学管理。 首先,我们需要收集一些地下水位的数据。可以通过在地下井或地下水位监测站安装传感器,定期测量地下水位的深度,并将数据保存在文件或数据库中。 接下来,我们可以使用Python一个小程序来计算地下水位。程序首先从数据源中读取地下水位的测量数据。然后,可以采用数学模型或者统计算法,结合其他相关因素如地表高程、降雨量等对地下水位进行预测和推断。 一种常用的模型是线性回归模型,其可以根据历史地下水位数据和其他相关因素的变化,来对地下水位进行预测。可以使用Python的机器学习库如scikit-learn来构建和训练这个模型。 另一种方法是统计算法,如时间序列分析。这种方法可以根据历史地下水位数据的趋势和周期性变化来推断未来的地下水位。Python的statsmodels库提供了丰富的时间序列分析功能,可以供我们使用。 最后,程序可以将计算得到的地下水位结果可视化展示出来,以便用户更直观地了解地下水位的分布情况。可以使用Python的数据可视化库如matplotlib或seaborn来绘制图表,将地下水位随时间、地理位置等的变化以图形的形式呈现出来。 通过编这个能计算地下水位的小程序,我们可以更好地监测和管理地下水资源,以支持可持续的水资源利用和保护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值