启用csv、xls和xlsx文件的句柄获取列标题
pyheaderfile的Python项目详细描述
pyheaderfile帮助处理扩展名为csv、xls和xlsx的文件。
这个项目的目标是通过头读取文件(列名)。使用此模块,我们可以使用同一接口处理csv、xls和xlsx文件。因此,我们可以转换扩展名、删除行中的值、更改excel文件的单元格样式、读取特定的excel文件、读取特定的单元格并仅读取一些标题。
安装
pip install pyheaderfile
如何使用
首先需要导入模块:
from pyheaderfile import Csv, Xls, Xlsx, guess_type
每一个都将在下面解释。
CSV类
读取csv
默认编码是utf8,但您可以更改它。默认strip为false,但类可以自动除去每个值:
file = Csv(name=’file.csv’, encode='latin1', strip=True) for row in file.read(): print row
设置标题
file.header = ['col1', 'col2','col3']
创建csv
file = Csv(name='filename.csv', header=['col1','col2','col3'])
写入列表csv
file.write(['col1','col2','col3'])
写入dict csv
file.write(dict(header=value))
保存文件
file.save()
xls类
读取xls
您也可以从xls文件中自动删除值,但默认值为false:
file = Xls(name=’file.xls’, strip=True) for row in file.read(): print row
设置标题
file.header = ['col1', 'col2','col3']
创建xls
file = Xls(name='filename.xls', header=['col1','col2','col3'])
写入列表
file.write(['col1','col2','col3'])
写入指令
file.write(dict(header=value))
保存文件
最后,您可以保存文件
file.save()
xlsx类
读取
您也可以从xlsx文件中删除值:
file = Xlsx(name=’file.xlsx’, strip=True) for row in file.read(): print row
设置标题
file.header = ['col1', 'col2','col3']
创建文件
file = Xlsx(name='filename.xlsx', header=['col1','col2','col3'])
写入列表
file.write(['col_val1','col_val2','col_val3'])
写入指令
file.write(dict(header=value))
保存文件
您也可以将文件保存到其他路径
file.save('/path/to/new/file/')
交替地保存,您可以使用close()强制使用相同的路径。
file.close()
使用内存
写作
对象可以存储在内存中,然后保存到磁盘或简单地保留在内存中:
from StringIO import StringIO mem_obj = StringIO() xls = Xls(mem_obj, header=['first', 'second']) xls.write('1 guy', '2 guys') xls.save() # or you can xls.save('/path/to/file/')
保存文件时,可以检索stringio内容或将其保存到指定目录的磁盘。在这种情况下,内容将以“default.xls”名称保存。
读数
和写一样,你可以从内存中读取对象。因此,保存内容后,您可以再次阅读:
from StringIO import StringIO mem_obj = StringIO() xls = Xls(mem_obj, header=['first', 'second']) xls.write('1 guy', '2 guys') xls.save() # here use new object new_xls = Xls(mem_obj) for row in new_xls: print row # should echo {'first': '1 guy', 'second': '2 guys'} then next rows
技巧
修改扩展名、名称和标题
您可以使用以下命令更改文件名和标题:
q = Xls() x = Xlsx(name='filename.xlsx') x.name = 'ugly file name' x.header = ['col1', 'col2','col3'] q(x)
小心点!不能使用stringio或其他内存存储更改名称。你会得到一个错误。
猜测文件类型
要猜测您需要打开哪个类,请使用:
filename = 'test.xls' my_file = guess_type(filename)
如果您使用的是csv或xls,则可以传递所有可能的kwarg并键入guess-right kwargs:
my_file = guess_type(filename, encode='latin1', strip=True)
只有当文件名是csv文件时,才猜输入send encode kwarg to instance。
而对于一个超级mbo,你可以猜测和转换一切!
my_file = guess_type(filename, **kwargs) convert_to = Xls() my_file.name = 'beautiful_name' my_file.header = ['col1', 'col2','col3'] convert_to(my_file) # now your file is a xls file ;) convert_to.save('/my/other/path/')