`
xiagu1
  • 浏览: 48198 次
  • 性别: 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模块学习

    `glob`模块是Python标准库中的一个重要组成部分,它主要用于文件路径的模式匹配。通过使用`glob`模块,开发者能够更加高效地查找符合特定规则的文件路径,这对于进行文件管理、自动化脚本编写等工作尤为有用。 ####...

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

    ### Python中的glob模块详解 #### 一、概览 `glob`模块是Python的一个内置库,主要用于基于指定的模式匹配文件路径。它采用类似于Unix shell风格的通配符来进行匹配,使得用户能够方便地查找符合特定命名规则的...

    浅析python标准库中的glob

    Python的标准库包含了许多实用的模块,其中之一就是`glob`,它提供了一种强大的方式来匹配和查找文件系统中的文件和目录。`glob`模块的主要功能是根据特定的模式(类似于正则表达式,但更简单)来搜索符合规则的文件...

    Python的shutil模块中文件的复制操作函数详解

    ### Python的shutil模块中文件的复制操作函数详解 在Python中,`shutil`模块提供了高级别的文件操作服务,其功能比`os`模块更为强大。本篇文章将重点介绍`shutil`模块中用于文件复制操作的主要函数:`copy()`, `...

    Python气象大数据统计平台.zip

    系统利用Python中的glob、shutil和os库根据文件名进行气象数据的分类整理,将不同的数据分类进不同的文件夹。利用glob、shutil、pandas和os库将上一步分类完成的文件进行合并,合并时去除空文件。其中有关PM25的文件...

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

    ### Python3标准库glob文件名模式匹配的问题 #### 概述 `glob` 是 Python 的一个内置标准库,主要用于文件名模式匹配。它提供了一种简单有效的方式来查找符合特定模式的文件名。与 `re` 模块所使用的正则表达式不同...

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

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

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

    在本项目中,我们将利用Python的几个库,包括tkinter、glob、PIL(Python Imaging Library)以及其Image和ImageTk模块,来创建一个简单的图片浏览器应用。这个应用旨在帮助用户浏览并显示指定目录下的所有图片文件。...

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

    在Python编程中,`glob`模块提供了一个方便的方式来查找符合特定模式的文件和目录路径。这个模块主要用于遍历文件系统,查找与特定模式匹配的文件路径。这些模式通常包含通配符,比如`*`, `?`, 和 `[]`。 1. **...

    ls在python中的用法.doc

    在Python编程语言中,"ls...以上就是在Python中模拟"ls"命令的方法,以及如何通过`os`和`glob`模块进行文件和目录的查找与管理。这两个模块提供了强大的文件系统操作功能,是Python开发者日常工作中不可或缺的工具。

    Python3.7.2中文文档-标准库-Python文件和目录访问

    在Python编程语言中,文件和目录访问是日常开发中不可或缺的部分。Python3.7.2的标准库提供了丰富的功能,使得处理文件和目录变得极其便捷。本文档将详细讲解Python3.7.2中与文件和目录操作相关的知识点,旨在帮助...

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

    在深入探讨Python中的glob模块之前,首先需要了解glob模块的基本用途以及如何在文件路径查找中应用。glob模块是一个基于Unix shell的规则(通配符)匹配文件路径名模式的工具,它允许用户利用特定的模式来匹配一个或...

    文件夹下所有图片的读取以及显示(python程序)

    在 Python 中,我们可以使用 `os` 模块和 `glob` 模块来读取文件夹中的图片。首先,我们需要使用 `os` 模块的 `path.join` 函数来将文件夹路径和文件名连接起来。例如,如果我们想要读取文件夹 `Image_dir` 中的所有...

    基于python的docx模块处理word和WPS的docx格式文件方式

    这通常在Python 2.x版本中是必要的,但在Python 3.x版本中,编码已经默认为UTF-8,所以这一步在Python 3中可省略。 ```python import sys reload(sys) sys.setdefaultencoding('utf-8') from docx import Document ...

    Ubuntu1604安装多个python版本的问题及解决方法.pdf

    在 Ubuntu 1604 系统中,自带 Python 2.7 和 Python 3.5 版本,但是在某些情况下,我们可能需要安装其他版本的 Python,例如 Python 3.8。在本文中,我们将介绍如何在 Ubuntu 1604 中安装多个 Python 版本,并解决...

Global site tag (gtag.js) - Google Analytics