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