CSV文件
import csv,codecs
bid_info=csv.DictReader(open('test.csv','r'))
dict_data=[]
for lines inbid_info:
if bid_info.line_num ==1:#跳过第一行
continue
else:
dict_data.append(lines)
#使用file.tell() 读取指定字节数的内容
file =open('src.txt', 'rb')
file2 =open('src2.txt','wb')
file2.write(codecs.BOM_UTF8)
sizehint= 100 # 200M
position= -1 #使用readlines不受大小限制,必须用read
print file.tell()
while file.tell() -position > 0:
position = file.tell()
print position
lines = file.read(sizehint)
file2.write(lines)
print lines
csvfile1 =file('src.csv','rb')
fin = csv.reader(csvfile1)
for Eachline in fin:
spoken = Eachline[0].strip().decode('gbk','utf-8') #可以设置列的索引
print spoken
csvfile2 =file('out.csv','wb')
csvfile2.write(codecs.BOM_UTF8) #设置写入的格式
writer = csv.writer(csvfile2)
writer.writerow(["原文","百度翻译","谷歌翻译"])
data = []
writer.writerows(data)
注:windows下使用r或者w,会自动空一行空行,所以要用二进制写rb或者wb
docx文件
import docx doc_new = docx.Document() doc_new.add_paragraph(public_key, style=None) doc_new.save('rsa_public_key.docx')
XLS文件
#coding=utf-8
#platform=python2.7
import xlrd
def readdata():
data_src = xlrd.open_workbook("src.xls")
# table = data_src.sheets()[0] #通过索引顺序获取
# table = data_src.sheet_by_index(0) #通过索引顺序获取
table = data_src.sheet_by_name("sheet1")#通过名称获取
Row = table.row_values(0) #获取 行 数据,结果为数组
Col = table.col_values(0) #获取 列 数据,结果为数组
nrows = table.nrows #获取行数
ncols = table.ncols #获取列数
cell_A1 = table.cell(0,0).value #单元格的索引
# # 简单的写入
# # import xdrlib,sys
# row = 0
# col = 0
# # 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
# ctype = 1 value = '单元格的值'
for i in range(table.nrows):#按列读取
for j in range(table.ncols):
print table.row_values(i)
print table.col_values(j)
print table.cell(i,j)
#
# #时间的处理
# import datetime
# xlrd.xldate_as_tuple(table.cell(2,2).value,0)#转化为元组
# xlrd.xldate.xldate_as_datetime(table.cell(2,2).value, 1)
# datetime.datetime(2018,7,9,0,0)
from pyExcelerator import Workbook
def writedata():
w = Workbook() #创建一个工作簿
ws = w.add_sheet('sheet1')#创建一个工作表
# ws.write(1,1,txt.decode('gbk'))#中文转码
ws.write(0,0,'bit')#在1行1列写入bit
ws.write(0,1,'huang')#在1行2列写入‘huang
for i in range(100):
for j in range(100):
ws.write(i,j,i+j)
w.save('src.xls')#保存
if __name__ =='__main__':
writedata()
readdata()
# 安装xlwt包 pip install xlutils 就会自动把xlutils和xlwt全都安装了
from xlutils import copy
from xlrd import open_workbook
from xlwt import easyxf
def wxlwt():
rb = open_workbook('samples.xls')
r_sheet = rb.sheet_by_index(0)
wb = copy(rb)
w_sheet = wb.get_sheet(0)
#在此处写入
w_sheet.write(1,2,'dfsa')
wb.save("new.xls")
#或者直接复制,需要注意的是copy之后就会失去格式,但是能够在已经存在的xls中追加数据
from xlutils.copy import copy
w = copy('book1.xls')
w.get_sheet(0).write(0,0,'foo')
w.save('book2.xls')
#修饰表格
styleBlueBkg = easyxf('pattern:pattern solid, fore_colour sky_blue;');
styleBold = xlwt.easyxf('font:bold on')
styleBoldRed = xlwt.easyxf('font:color-index red,bold on')
headerStyle = styleBoldRed;
wb = xlwt.workbook()
ws = xlwt.add_sheet(gConst['xls']['sheetName'])
ws.write(0,0,'Header',headerStyle)
ws.write(0,1,'CatalogNumber',headerStyle)
ws.write(0,2,'PartNumber',headerStyle)
ws.sace(gConst['xls']['fileName'])
from xlutils import copy
from xlrd import open_workbook
from xlwt import easyxf
def wxlwt():
rb = open_workbook('samples.xls')
r_sheet = rb.sheet_by_index(0)
wb = copy(rb)
w_sheet = wb.get_sheet(0)
#在此处写入
w_sheet.write(1,2,'dfsa')
wb.save("new.xls")
#或者直接复制,需要注意的是copy之后就会失去格式,但是能够在已经存在的xls中追加数据
from xlutils.copy import copy
w = copy('book1.xls')
w.get_sheet(0).write(0,0,'foo')
w.save('book2.xls')
#修饰表格
styleBlueBkg = easyxf('pattern:pattern solid, fore_colour sky_blue;');
styleBold = xlwt.easyxf('font:bold on')
styleBoldRed = xlwt.easyxf('font:color-index red,bold on')
headerStyle = styleBoldRed;
wb = xlwt.workbook()
ws = xlwt.add_sheet(gConst['xls']['sheetName'])
ws.write(0,0,'Header',headerStyle)
ws.write(0,1,'CatalogNumber',headerStyle)
ws.write(0,2,'PartNumber',headerStyle)
ws.sace(gConst['xls']['fileName'])
OS包
os.rename("wenben.txt","shuaiqi.txt") | 可以是相对或者绝对路径 |
os.mkdir("happy") | 在所运行的文件下建立目录 |
os.rmdir("happy") | 在所运行的文件下删除目录 |
os.chdir("/home") | 改变所运行的目录 |
os.getcwd() | 给出当前目录 |
数据的处理
打开文件 | .open() | data_file = open(file_name,"rb") |
读取文件 | .reader() | data = csv.reader(file(data_set,"rb")) |
读取某一列csv |
| for user in data: print user[0] # user[0]表示第一列数据 print user[1] # user[1]表示第二列数据 spoken = Eachline[column].strip().decode('gbk', 'utf-8') #抽取列,改成u |
分词,给多变量赋值 | name,pwd=data.split(",") |
|
删除多于字符 | name=name.strip('\t\r\n') |
|
写入器 | .writer() | WRITE = csv.writer(csvfile, dialect='excel') |
写入一行 | .writerow([]) | WRITE. writerow(['a', '1', '1', '2', '2']) |
写入一个数组 | .writerows([data]) | data = [("c","n","m"),("c","n","m"),("c","n","m")] writer.writerows(data) |
EXCEL相关
excle处理的数据1个sheet不能超过36656行
通过xlwt只能写入xls文件,不能写入xlsx文件。文件虽然能生成,但是用excel打不开(测试环境为excel2013)。
通过xlwt.Formula产生的xls文件虽然能正常打开,但是公式其实是非常不稳定的,关闭的时候会提示公式已经修改,是否保存之类的。产生的xls文件里面涉及公式的单元格不能被xlrd正常读取(无论公式本身还是数值)
import xlrd #读
import xlwt #写(默认的pip里面没有)
file相关命令
file.closed | 返回true如果文件已被关闭,否则返回false。 |
file.mode | 返回被打开文件的访问模式。 |
file.name | 返回文件的名称。 |
file.softspace | 如果用print输出后,必须跟一个空格符,则返回false。否则返回true。 |
file.close() | 关闭文件,关闭文件之后不能读写,2.0以后自动关闭 |
file.flush() | 将缓冲区的数据like写入文件,而不是被动等待输出缓冲区写入 |
file.fileno() | 返回一个整型的文件描述符(file descriptor FD整型),可以用在如os模块的read方法等一些底层操作上。 |
file.isatty() | 如果文件连接到一个终端设备返回 True,否则返回 False。 |
file.next() | 返回文件下一行。 |
file.read([size]) | 从文件读取指定的字节数,如果未给定或为负则读取所有。 |
file.readline([size]) | 读取整行,包括/n |
file.readlines([sizehint]) | 读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行,实际读取值可能比sizhint较大,因为需要填充缓冲区。 |
file.seek(offset[, whence]) | 设置文件当前位置 |
file.tell() | 返回文件当前位置。 |
file.truncate([size]) | 截取文件,截取的字节通过size指定,默认为当前文件位置。 |
file.write(str) | 将字符串写入文件,没有返回值。 |
file.writelines(sequence) | 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。 |
打开文件的方式(如果在windows系统下,用二进制写,因为否则会写入一行插入一空行)
模式 | 描述 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 注意,此方法每插入一条数据会产生空行 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 注意,此方法每插入一条数据会产生空行 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |