`
xiagu1
  • 浏览: 47401 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

python中的glob、shutil、rmtree、remoevall

阅读更多

最近在处理数据的时候需要把所有的文件copy成一个,需要实现类似dos下面的copy *.* a.dat,copy结束后,将a.dat 移动到另一个文件夹,同时清空文件。中间试了下shutil,结果发现在rmtree时候经常出错,总有一个文件删除不了。查了半天不清楚原因所在,后来刚好找到了个写好了错误处理的代码,直接使用了。这里glob很好用,可以获取一个当前目录下的文件列表,而且可以给定文件通配符。

    ff=glob.glob("*.ABJ")
    fout = file('fn.dat', 'wb')
    for n in ff:
        fin = file(n, 'rb')
        shutil.copyfileobj(fin, fout, 65536)
        fin.close()
    fout.close()
    fn=datadir+"fn.dat"
    shutil.move(fn,exedir)
    #raw_input("Press ENTER to exit")
    os.chdir("..")
    print os.getcwd()
    #shutil.rmtree(datadir)
    removeall.removeall(datadir)
    print "ok"  

 其中for循环中指定 了65536为防止文件太大。

shutil.rmtree本身没有进行错误处理,本来准备自己写,刚好发现一个别人写好的代码,直接拿来用了。

#! /usr/bin/env python
#coding=utf-8
## {{{ Recipe 193736 (r1): Clean up a directory tree 
""" removeall.py:

   Clean up a directory tree from root.
   The directory need not be empty.
   The starting directory is not deleted.
   Written by: Anand B Pillai <abpillai@lycos.com> """

import sys, os

ERROR_STR= """Error removing %(path)s, %(error)s """

def rmgeneric(path, __func__):

    try:
        __func__(path)
        print 'Removed ', path
    except OSError, (errno, strerror):
        print ERROR_STR % {'path' : path, 'error': strerror }
            
def removeall(path):

    if not os.path.isdir(path):
        return
    
    files=os.listdir(path)

    for x in files:
        fullpath=os.path.join(path, x)
        if os.path.isfile(fullpath):
            f=os.remove
            rmgeneric(fullpath, f)
        elif os.path.isdir(fullpath):
            removeall(fullpath)
            f=os.rmdir
            rmgeneric(fullpath, f)
## End of recipe 193736 }}}
 
2
0
分享到:
评论
1 楼 raidsan 2010-06-12  
为安全起见, 删除目录的模块代码中应该检查目录是否符号连接,如果是的话,应该只删除目录的符号连接, shutil.rmtree 还是上面的removeall都把目录里面的内容清空了

相关推荐

    Python中使用glob和rmtree删除目录子目录及所有文件的例子

    一、batch与shell中 目录及文件: 复制代码 代码如下: C:\TESTFOLDER\TEST ├─Test2 └─Test3  test.txt 删除目录及其下的所有文件: ...二、python中 :注意如果有错误会有异常抛出,需要处理异常。 1)删除文件且

    python通过shutil实现快速文件复制的方法

    本文实例讲述了python通过shutil实现快速文件复制的方法。分享给大家供大家参考。具体如下: python通过shutil实现快速文件拷贝,shutil使用起来非常方便,可以通过pip install shutil安装 from shutil import * ...

    python glob模块学习

    python模块学习

    简单掌握Python中glob模块查找文件路径的用法

    glob模块遵循Unix的shell规则来匹配文件名进行文件查找,下面我们结合匹配相关的字符区间与通配符知识,来简单掌握Python中glob模块查找文件路径的用法

    Pythonglob模块的应用glob文件路径查找.pdf-综合文档

    Pythonglob模块的应用glob文件路径查找.pdf

    在Python中使用glob模块查找文件路径的方法

    主要介绍了在Python中使用glob模块查找文件路径的方法,使用模块其中的iglob方法实现起来非常简单,需要的朋友可以参考下

    使用python tkinter glob PIL Image ImageTk 实现图片浏览器

    通过查看网络视频教程,使用python tkinter glob PIL Image ImageTk 实现图片浏览器,练习写一个图片浏览器,带较详细的注释。希望对初学者有所用处。

    浅析python标准库中的glob

    glob 文件名模式匹配,不用遍历整个目录判断每个文件是不是符合。...列出子目录中的文件,必须在模式中包括子目录名: import glob #用子目录查询文件 print ('Named explicitly:') for name in glob.glob('dir/sub

    Python中实现从目录中过滤出指定文件类型的文件

    最近学习下python,将从指定目录中过滤出指定文件类型的文件输出的方法总结一下,供日后查阅 复制代码 代码如下: #!/usr/bin/env python import glob import os os.chdir(“./”) for file in glob.glob(“*.py”): ...

    Python3标准库glob文件名模式匹配的问题

    glob的模式规则与re模块使用的正则表达式并不相同。实际上,glob的模式遵循标准UNIX路径扩展规则。只使用几个特殊字符来实现两个不同...这篇文章主要介绍了Python3标准库glob文件名模式匹配的知识,需要的朋友可以参考下

    python3.6亲测可用

    python3.6亲测可用

    对python遍历文件夹中的所有jpg文件的实例详解

    python发现文件夹下所有的jpg文件,并且安装文件排放的顺序输出 glob模块是最简单的模块之一,内容非常少。用它可以查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。查找文件只用到三个匹配符:”*...

    python3.6.5参考手册 chm

    Python参考手册,官方正式版参考手册,chm版。以下摘取部分内容:Navigation index modules | next | Python » 3.6.5 Documentation » Python Documentation contents What’s New in Python What’s New In ...

    自己总结的python笔记

    自己总结的python笔记,适合初学者使用,排版简洁美观适合直接打印,以下是部分展示, 批量读取文件 In [6]: import pandas as pd #载入 pandas 包记为 pd In [7]: import os #载入 os 包 In [8]: import glob #载入...

    Python标准库os.path包、glob包使用实例

    print(os.path.basename(path)) # 查询路径中包含的文件名 print(os.path.dirname(path)) # 查询路径中包含的目录 info = os.path.split(path) # 将路径分割成文件名和目录两个部分,放在一个表中返回 path2 = os...

    高中学校利用Python做成绩分析.rar

    本文介绍的是利用Python语言,做成绩分析并生成成绩分析动态图表。Python语言可以利用Pandas、Pyecharts等各种类库,进行数据分析。 本文介绍的成绩分析大体分为三步: 一、拼合单科成绩,合成学年成绩,计算总分,...

Global site tag (gtag.js) - Google Analytics