zoukankan      html  css  js  c++  java
  • 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详解

  • 相关阅读:
    堆栈学习
    需要阅读的书籍
    Rust Book Lang Ch.19 Fully Qualified Syntax, Supertraits, Newtype Pattern, type aliases, never type, dynamic sized type
    Rust Lang Book Ch.19 Placeholder type, Default generic type parameter, operator overloading
    Rust Lang Book Ch.19 Unsafe
    Rust Lang Book Ch.18 Patterns and Matching
    Rust Lang Book Ch.17 OOP
    Rust Lang Book Ch.16 Concurrency
    Rust Lang Book Ch.15 Smart Pointers
    HDU3966-Aragorn's Story-树链剖分-点权
  • 原文地址:https://www.cnblogs.com/yc913344706/p/7764466.html
Copyright © 2011-2022 走看看