Python基础WEPython

Python文件读写(excel、csv、txt)

2019-05-15  本文已影响15人  桃桃沙弥

读写xls、xlsx

可使用open、xlrd/xlwt、openpyxl。重点介绍openpyxl。

openpyxl官方文档:http://openpyxl.readthedocs.io/en/stable/index.html

安装使用pip install openpyxl即可。

基本语法介绍:

  1. 写操作
>>> from openpyxl import Workbook
>>> wb = Workbook()
image.gif
>>> ws = wb.active
image.gif
>>> ws1 = wb.create_sheet("Mysheet") # insert at the end (default)
# or
>>> ws2 = wb.create_sheet("Mysheet", 0) # insert at first position
image.gif
>>>ws.title = "New Title"
image.gif
>>> ws3 = wb["New Title"]
image.gif

(1)wb.sheetnames

(2)

>>> for sheet in wb:
...     print(sheet.title)
image.gif
>>> source = wb.active
>>> target = wb.copy_worksheet(source)
image.gif

单单元格

>>> ws['A4'] = 4
image.gif

或者:

d = ws.cell(row=4, column=2, value=10)
image.gif

计数由1开始。

多单元格

>>> cell_range = ws['A1':'C2']
image.gif
>>> colC = ws['C']
>>> col_range = ws['C:D']
>>> row10 = ws[10]
>>> row_range = ws[5:10]
image.gif
>>> for row in range(1, 40):
...     ws1.append(range(600))
image.gif

可以实现每一行逐个单元格写入

遍历所有行/列:

使用tuple(ws.rows)/tuple(ws.columns)

>>> ws = wb.active
>>> ws['C9'] = 'hello world'
>>> tuple(ws.rows)
((<Cell Sheet.A1>, <Cell Sheet.B1>, <Cell Sheet.C1>),
(<Cell Sheet.A2>, <Cell Sheet.B2>, <Cell Sheet.C2>),
(<Cell Sheet.A3>, <Cell Sheet.B3>, <Cell Sheet.C3>),
(<Cell Sheet.A4>, <Cell Sheet.B4>, <Cell Sheet.C4>),
(<Cell Sheet.A5>, <Cell Sheet.B5>, <Cell Sheet.C5>),
(<Cell Sheet.A6>, <Cell Sheet.B6>, <Cell Sheet.C6>),
(<Cell Sheet.A7>, <Cell Sheet.B7>, <Cell Sheet.C7>),
(<Cell Sheet.A8>, <Cell Sheet.B8>, <Cell Sheet.C8>),
(<Cell Sheet.A9>, <Cell Sheet.B9>, <Cell Sheet.C9>))
image.gif

遍历指定单元格:

使用iter_rows()/iter_cols()

>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
...    for cell in row:
...        print(cell)
<Cell Sheet1.A1>
<Cell Sheet1.B1>
<Cell Sheet1.C1>
<Cell Sheet1.A2>
<Cell Sheet1.B2>
<Cell Sheet1.C2>
image.gif
>>> for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):
...     for cell in col:
...         print(cell)
<Cell Sheet1.A1>
<Cell Sheet1.A2>
<Cell Sheet1.B1>
<Cell Sheet1.B2>
<Cell Sheet1.C1>
<Cell Sheet1.C2>
image.gif

两种方法,遍历的元素相同,但是顺序不同。

遍历读值:


image.png
>>> wb.save('balances.xlsx')
image.gif

保存更改之后,写操作完成。

2.读操作

>>> from openpyxl import load_workbook
>>> wb2 = load_workbook('test.xlsx')

image.gif
>>> print wb2.get_sheet_names()
['Sheet2', 'New Title', 'Sheet1']
image.gif

其他表索引、单元格索引操作与前面提到的相同,不再赘述。还有其他的一些函数与属性,比较少用,详见官方文档。

读写csv文件

可使用open、python内置csv库和pandas提供的read_csv方法。python提供的csv库已经可以满足大部分的文件处理需求,但是其实基于行的操作,read_csv可以配合pandas的一些数据处理方法使用,可以行、列双向操作,更加方便。本文中将重点介绍csv库,并提供一些read_csv方法相关介绍外链。

csv库

官方文档:https://docs.python.org/2/library/csv.html#module-csv

不需要另外安装,直接导入使用。

import csv
image.gif

csvfile,必须是支持迭代(Iterator)的对象,可以是文件(file)对象或者列表(list)对象,如果是文件对
象,打开时需要加"b"标志参数。

dialect,编码风格,默认为excel的风格,也就是用逗号(,)分隔,dialect方式也支持自定义,通过调用register_dialect方法来注册,下文会提到。

fmtparam,格式化参数,用来覆盖之前dialect对象指定的编码风格。

返回一个list,list的原始是文件的行内容。每一行也是一个list,list的元素是每个单元格。增减行与单元格可以通过list的操作进行。list的相关操作见:http://www.runoob.com/python/python-lists.html

一个例子:

>>> import csv
>>> with open('eggs.csv', 'rb') as csvfile:
...     spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
...     for row in spamreader:
...         print ', '.join(row)
Spam, Spam, Spam, Spam, Spam, Baked Beans
Spam, Lovely Spam, Wonderful Spam
image.gif

例子中把每行中的内容,通过‘, ’分隔符连接了起来

注意:如果csvfile是一个文件对象,那么它必须用“b”标志打开(open('eggs.csv', 'rb'))

writer(csvfile, dialect='excel', **fmtparams)

with open('t.csv','wb') as myFile:      
    myWriter=csv.writer(myFile)  
    myWriter.writerow([7,'g'])  
    myWriter.writerow([8,'h'])  
    myList=[[1,2,3],[4,5,6]]  
    myWriter.writerows(myList) 
image.gif

'w'表示写模式。

首先open()函数打开当前路径下的名字为't.csv'的文件,如果不存在这个文件,则创建它,返回myFile文件对象。

csv.writer(myFile)返回writer对象myWriter。

writerow()方法是一行一行写入,writerows方法是一次写入多行。

注意:如果文件't.csv'事先存在,调用writer函数会先清空原文件中的文本,再执行writerow/writerows方法。

补充:除了writerow、writerows,writer对象还提供了其他一些方法:writeheader、dialect

参考:https://www.cnblogs.com/pyxiaomangshe/p/8026483.html

read_csv

官方文档 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

安装:pip install pandas

参考:https://www.cnblogs.com/skying555/p/5914391.html

上一篇下一篇

猜你喜欢

热点阅读