Python

作者: 你身边的那个TA | 来源:发表于2018-05-07 16:54 被阅读83次

    常用接口

    • os.chdir(os.path.dirname(os.path.abspath(sys.argv[0]))) #定位工作目录为当前目录
    • root_path = '.'+os.sep #os.sep 系统无关分隔符
    • raw_input('\nPress Enter to exit:') #等待输入回车结束运行

    Python之Excel文件操作

    python对Excel文件的操作需要借助xlrd、xlwt、xlutils,这三个包非自带,需要另行安装。

    • xlrd、xlwt、xlutils需要另外下载安装才可以import使用,分别下载源码xlrd-1.1.0.tar.gz 及xlrd-1.1.0-py2.py3-none-any.whl 解压到python安装的根目录,运行如下命令安装:
    python setup.py install
    pip install xxx.whl
    
    • xlwt 写操作
    import xlwt
    
    def xlwt_test():
        # 创建一个Workbook对象,这就相当于创建了一个Excel文件
        # encoding:设置字符编码,默认是ascii。
        # style_compression:表示是否压缩,不常用。
        book = xlwt.Workbook(encoding='utf-8', style_compression=0)
    
        # 创建一个sheet对象,一个sheet对象对应Excel文件中的一张表格。
        # 其中的test是这张表的名字,cell_overwrite_ok,表示是否可以覆盖单元格,默认值是False
        sheet = book.add_sheet('test', cell_overwrite_ok=True)
    
        # 向表test中添加数据
        # 其中的'0-行, 0-列'指定表中的单元,'EnglishName'是向该单元写入的内容
        sheet.write(0, 0, 'EnglishName')
        sheet.write(1, 0, 'Marcovaldo')
    
        # 最后,将以上操作保存到指定的Excel文件中
        # 在字符串前加r,声明为raw字符串,这样就不会处理其中的转义了。否则,可能会报错
        book.save('test1.xls')
        pass
    
    • xlrd 读操作
    import xlrd
    
    def xlrd_test():
        xlsfile = r"20180102(W1).xlsx"# 打开指定路径中的xls文件
        book = xlrd.open_workbook(xlsfile)#得到Excel文件的book对象,实例化对象
        sheet_names = book.sheet_names()
        for sheet_name in sheet_names:
            sheet = book.sheet_by_name(sheet_name)
            print(sheet.name,sheet.nrows,sheet.ncols)
        pass
    
    • xlutils.copy 改写操作
      xlutils.copy是将一个只读的excel文件转换成可写的文件。
    import xlrd
    from xlutils.copy import copy
    
    def xlutils_copy_test():
        xlsfile = r"20180102(W1).xlsx"
        rd_book = xlrd.open_workbook(xlsfile, formatting_info=True) #formatting_info 保留格式
        wt_book = copy(rd_book)
        wt_sheet = wt_book.get_sheet(0)
        wt_sheet.write(0, 0, 'name')
        wt_sheet.write(0, 1, 'age')
        wt_book.save(xlsfile)
        pass
    
    • 中文编译问题
      需要转换成utf-8编码:
      a、文件头增加 # -- coding:utf-8 --
      b、文件编码格式也需要转换成utf-8编码

    • formatting_info=True not yet implemented
      Excel文件往往会夹杂着各种格式、各种规则、各种宏,我们对其操作时一般都需要保留这些格式,xlrd提供了formatting_info参数解决这个问题。该参数默认为False(即默认会去除所有格式),如下使用:
      rdbook = xlrd.open_workbook(file, formatting_info=True)
      但是当对新版本的xlsx格式Excel文件进行如上操作时,直接抛出异常:
      NotImplementedError: formatting_info=True not yet implemented
      这是因为formatting_info还没有对新版本的xlsx的格式完成兼容。那么我们如何来保留这些格式呢?其实我们只要将xlsx另存为xls格式即可。

    • TypeError: 'str' does not support the buffer interface
      在Python34上会报如下错误:

    源码:
        with open(log_file, 'rb') as f:
            data = f.readlines()
            i = 0
            for line in data[::1]:
                if ': error: ' in line:
                    ……
    运行报错:
        if ': error: ' in line:
    TypeError: 'str' does not support the buffer interface
    

    网上查找,都描述是编码问题(utf-8),这里将line改为 str(line) 即可。

    相关文章

      网友评论

          本文标题:Python

          本文链接:https://www.haomeiwen.com/subject/cydvrftx.html