• python 文件处理 -- 03 文件处理模块


    1.os模块

    1.1作用

    文件目录管理、进程管理

    http://www.cnblogs.com/now-fighting/p/3531464.html

    1.2常用

    os.name--判断现在正在使用的平台。Windows--nt; Linux--posix

    os.getcwd()--得到当前工作的目录。

    os.listdir(path)--指定所有目录下所有的文件和目录名,返回list。

    os.remove(path)--删除指定文件

    os.mkdir(path [, mode=0777])--创建目录

    os.makedirs(path [, mode=0777])--递归创建目录

    os.path.isfile(path)--判断指定对象是否为文件。是返回True,否则False

    os.path.isdir(path)--判断指定对象是否为目录。是True,否则False。

    os.path.exists(path)--检验指定的对象是否存在。是True,否则False.

    os.path.split(path)--返回路径的目录和文件名,元组。

    import os
    import sys
    
    if __name__ == "__main__":
        print os.path.realpath(sys.argv[0])
        print os.path.split(os.path.realpath(sys.argv[0]))
        print os.path.split(os.path.realpath(sys.argv[0]))[0]
    
    ***执行结果
    /home/jihite/ftp/del.py
    ('/home/jihite/ftp', 'del.py')
    /home/jihite/ftp 

    os.system(command)——执行shell命令。成功返回0,失败返回非0

    >>> os.system("echo 'hello world!'")
    'hello world!'
    0
    注意:此处运行shell命令时,如果要调用python之前的变量,可以用如下方式:
    var=123
    os.environ['var']=str(var) //注意此处[]内得是 “字符串”
    os.system('echo $var')

    os.chdir(path)--改变目录到指定目录

    os.path.getsize(filename)--获得文件的大小,如果为目录,返回0

    os.path.join(path, name)--连接目录和文件(目录)名。

    os.walk(path)--递归遍历某文件夹(包括子文件夹)

    walk(top, topdown=True, onerror=None, followlinks=False)

     1 >>> os.getcwd()
     2 
     3 'E:\yc_study\python\study_imooc\file_handle'
     4 
     5 >>> for dir_path,dir_name,file_names in os.walk(os.getcwd()):
     6 
     7 ...         print '*****dir_path
    '
     8 
     9 ...         print dir_path
    10 
    11 ...         print '*****dir_name
    '
    12 
    13 ...         print dir_name
    14 
    15 ...         print '*****file_name
    '
    16 
    17 ...         print file_names
    18 
    19 ...
    20 
    21 *****dir_path
    22 
    23  
    24 
    25 E:yc_studypythonstudy_imoocfile_handle
    26 
    27 *****dir_name
    28 
    29  
    30 
    31 ['1']
    32 
    33 *****file_name
    34 
    35  
    36 
    37 ['1.txt', 'argv.py', 'create_utf_8.txt', 'helloworld.py', 'unicode_test.txt']
    38 
    39 *****dir_path
    40 
    41  
    42 
    43 E:yc_studypythonstudy_imoocfile_handle1
    44 
    45 *****dir_name
    46 
    47  
    48 
    49 ['2']
    50 
    51 *****file_name
    52 
    53  
    54 
    55 []
    56 
    57 *****dir_path
    58 
    59  
    60 
    61 E:yc_studypythonstudy_imoocfile_handle12
    62 
    63 *****dir_name
    64 
    65  
    66 
    67 ['3']
    68 
    69 *****file_name
    70 
    71  
    72 
    73 []
    74 
    75 *****dir_path
    76 
    77  
    78 
    79 E:yc_studypythonstudy_imoocfile_handle123
    80 
    81 *****dir_name
    82 
    83  
    84 
    85 []
    86 
    87 *****file_name
    88 
    89  
    90 
    91 []
    92 
    93  
    os.walk使用举例

    2.shutil模块

    2.1作用

    移动、复制、打包、压缩、解压

    http://blog.csdn.net/xmnathan/article/details/36217631

    2.2常用命令

    shutil.rmtree("dir")--删除目录。空目录、有内容的目录都可以删

    copyfile(src, dst)  # 拷贝文件

            复制文件内容(不包含元数据)从src到dst。

            DST必须是完整的目标文件名。

            如果src和dst是同一文件,就会引发错误shutil.Error。

            dst必须是可写的,否则将引发异常IOError。

            如果dst已经存在,它会被替换。

            特殊文件,例如字符或块设备和管道不能使用此功能,因为copyfile会打开并阅读文件。

            src和dst的是字符串形式的路径名。

    copyfile()调用了底函数层copyfileobj()。

            shutil.copyfile('shutil_copyfile.py', 'shutil_copyfile.py.copy')

    copyfileobj(fsrc, fdst, length=16384)  # 将文件内容拷贝到另一个文件

            需要引入StringIO模块才能使用

            复制文件内容(不包含元数据)从类文件对象src到类文件对dst。

            可选参数length指定缓冲区的大小,负数表示一次性读入。

            默认会把数据切分成小块拷贝,以免占用太多内存。

            注意:拷贝是从fsrc的当前文件开始。

    copy(src, dst)

            复制文件src到文件或目录dst

            权限位也会复制。

            如果dst是目录,使用src相同的文件名创建(或覆盖)。

            src和dst的是字符串形式的路径名。

            os.mkdir('example')

            print 'BEFORE:', os.listdir('example')

            shutil.copy('shutil_copy.py', 'example')

    copy2(src, dst)

            类似shutil.copy,元数据也复制。

            实际上先调用shutil.copy,然后使用copystat。

            shutil.copy2('shutil_copy2.py', 'example')

    copytree(src, dst, symlinks=False, ignore=None)  # 递归复制

            Recursively copy a directory tree using copy2().

    3.glob模块

    可以查找符合自己目的的文件,类似于Windows下的文件搜索,而且也支持通配符,*,?,[]这三个通配符,*代表0个或多个字符,?代表一个字符,[]匹配指定范围内的字符,如[0-9]匹配数字。

    3.1glob.glob(path)

    Return a list of paths matching a pathname pattern.

    3.2glob.igblob()

    Return an iterator which yields the paths matching a pathname pattern.

     1 >>> import os
     2 
     3 >>> os.chdir(r'E:yc_studypythonstudy_imoocfile_handle')
     4 
     5 >>> os.getcwd()
     6 
     7 'E:\yc_study\python\study_imooc\file_handle'
     8 
     9 >>> import glob
    10 
    11 >>> os.listdir(os.getcwd())
    12 
    13 ['1', '1.txt', 'argv.py', 'create_utf_8.txt', 'helloworld.py', 'unicode_test.txt']
    14 
    15 >>> glob.glob(r'%s*.py' % os.getcwd())
    16 
    17 ['E:\yc_study\python\study_imooc\file_handle\argv.py', 'E:\yc_study\python\study_imooc\file_handle\helloworld.py']
    18 
    19 >>> glob.glob(r'%s*.txt' % os.getcwd())
    20 
    21 ['E:\yc_study\python\study_imooc\file_handle\1.txt', 'E:\yc_study\python\study_imooc\file_handle\create_utf_8.txt', 'E:\yc_study\python\study_imooc\file_handle\unicode_test.txt']
    glob.glob使用举例
     1 >>> glob.iglob(r'%s*.txt' % os.getcwd())
     2 
     3 <generator object iglob at 0x000000000256AF78>
     4 
     5 >>> for i in glob.iglob(r'%s*.txt' % os.getcwd()):
     6 
     7 ...         print i
     8 
     9 ...
    10 
    11 E:yc_studypythonstudy_imoocfile_handle1.txt
    12 
    13 E:yc_studypythonstudy_imoocfile_handlecreate_utf_8.txt
    14 
    15 E:yc_studypythonstudy_imoocfile_handleunicode_test.txt
    glob.iglob使用举例

    4.python处理各类文件

    4.1ConfigParse模块读取配置文件(.ini)

    基本使用&Unicode编码问题

    http://www.cnblogs.com/victorwu/p/5762931.html

    深度解读

    http://www.cnblogs.com/yyds/p/6627208.html

    4.2python处理xml文件

    BeautifulSoup第三方库

    https://www.crummy.com/software/BeautifulSoup/

    4.3Python处理pdf文件

    https://pypi.python.org/pypi/pdfminer3k下载tar包

    使用python setup.py install安装

    示例如下,详细见pdfminer3k库的layout.py文件,或者库中的docs/index.html

    from pdfminer.pdfparser import PDFParser, PDFDocument
    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
    from pdfminer.pdfdevice import PDFDevice
    from pdfminer.layout import LAParams
    from pdfminer.converter import PDFPageAggregator
    
    # 打开PDF文档
    fp = open("naacl06-shinyama.pdf", 'rb')
    
    # 创建一个与文档关联的解释器
    parser = PDFParser(fp)
    
    # 创建PDF文档对象
    pdf_doc = PDFDocument()
    
    # 链接解释器和文档对象
    parser.set_document(pdf_doc)
    pdf_doc.set_parser(parser)
    
    # 初始化pdf文档,即传入密码,没有传入空字符串即可
    pdf_doc.initialize("")
    
    # 创建PDF资源管理器
    resource_manager = PDFResourceManager()
    
    # 创建PDF参数分析器
    laparam = LAParams()
    
    # 使用PDF资源管理器和PDF参数分析器创建PDF聚合器
    device = PDFPageAggregator(resource_manager, laparams = laparam)
    
    # 使用PDF资源管理器和PDF聚合器创建页面解释器
    interpreter = PDFPageInterpreter(resource_manager, device)
    
    # 读取PDF文档
    # 获取每一页
    for page in pdf_doc.get_pages():
        # 使用页面解析器来读取PDF的每一页
        interpreter.process_page(page)
        # 使用聚合器来获取内容的List -- LTPage
        layouts = device.get_result()
        # 针对每一项内容来进行打印
        for layout in layouts:
            # LTPage对象有多种类型,如字符、线段、图形、图片等,详细见pdfminer3k库的layout.py文件,或者库中的docs/index.html
            # Represents an entire page. May contain child objects like LTTextBox, LTFigure, LTImage, LTRect, LTCurve and LTLine.
            # if isinstance(layout, pdfminer.layout.LTText):
            if hasattr(layout, "get_text"):
                print(layout.get_text())
    python读取pdf文档sample

    4.4Python处理对象

    Python标准库05 存储对象 (pickle包,cPickle包)

    4.5Python处理excel表格

    python中使用xlrd、xlwt操作excel表格详解

     4.6Python处理json文件/对象

    python的json模块的dumps,loads,dump,load方法介绍

    使用Python解析JSON详解

  • 相关阅读:
    交叉编译OpenCV的教程——基于aarch64-linux-gnu的交叉编译器
    Day01:我的Python学习之路
    将中文库导入到ARM板子中以解决中文显示乱码的教程
    Linux环境下挂载SD卡的教程
    Ubuntu下压缩与解压各种文件的命令
    Ubuntu14.04环境下Qt5.5以上版本无法输入中文的解决教程
    编程之美:队列中的最大最小值
    leetcode:Compare Version Numbers
    leetcode:Search for a Range
    csapp:无符号数可能造成的程序bug
  • 原文地址:https://www.cnblogs.com/yc913344706/p/7764466.html
Copyright © 2020-2023  润新知