python文件操作

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+

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值