當前位置:首頁 » 編程語言 » python追加文件

python追加文件

發布時間: 2022-06-13 09:24:16

python怎樣給Excel 2007版以上的xlsx文件追加數據

背景

Python中,xlrd主要用來讀取excel文件, xlwt主要用來寫文件,本文主要介紹打開已經存在的excel的xls文件,然後在最後新的一行的數據。要用到xlutils包,它依賴於前兩個包。

折騰過程

1.找到了參考資料:

writing to existing workbook using xlwt

其實是沒有直接實現:

打開已有的excel文件,然後在文件最後寫入,添加新數據

的函數的。

只不過,可以利用:

Working with Excel Files in Python

中的庫,組合實現。

2.writing to existing workbook using xlwt

給出了示例代碼:

?

rom xlutils.importfromxlrdimportopen__ROW=297 # 0 based (subtract 1 from excel row number)col_age_november=1col_summer1=2col_fall1=3rb=open_workbook(file_path,formatting_info=True)r_sheet=rb.sheet_by_index(0)# read only to introspect the filewb=(rb)# a writable (I can't read values out of this, only write to it)w_sheet=wb.get_sheet(0)# the sheet to write to within the writable forrow_indexinrange(START_ROW, r_sheet.nrows):age_nov=r_sheet.cell(row_index, col_age_november).valueifage_nov==3:#If 3, then Combo I 3-4 year old for both summer1 and fall1w_sheet.write(row_index, col_summer1,'Combo I 3-4 year old')w_sheet.write(row_index, col_fall1,'Combo I 3-4 year old')wb.save(file_path+'.out' + os.path.splitext(file_path)[-1])

3. 剛又看到,有更簡潔的代碼:

?

1234fromxlutils.importw=('book1.xls')w.get_sheet(0).write(0,0,"foo")w.save('book2.xls')

4.現在打算去試試。

先去安裝xlrd:

【記錄】Python中安裝xlrd模塊

6.再去安裝xlutils:

【記錄】Python中安裝可以讀寫excel的xls文件的xlutils模塊(需依賴於xlrd和xlwt)

7.接著可以去寫代碼了。

8.先是:

【已解決】Python中使用xlutils.出錯:AttributeError: 『mole』 object has no attribute 『』

9.後是:

【已解決】Python中使用xlutils的出錯:AttributeError: 『str』 object has no attribute 『datemode』

10.後來是用如下代碼:

?

;importxlrd;#import xlutils;fromxlutils.import;#init xls file#styleBlueBkg= xlwt.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=wb.add_sheet(gConst['xls']['sheetName']);ws.write(0,0,"Header", headerStyle);ws.write(0,1,"CatalogNumber", headerStyle);ws.write(0,2,"PartNumber", headerStyle);wb.save(gConst['xls']['fileName']);#open existed xls file#newWb = xlutils.(gConst['xls']['fileName']);#newWb = (gConst['xls']['fileName']);oldWb=xlrd.open_workbook(gConst['xls']['fileName']);printoldWb;#<xlrd.book.Book object at 0x000000000315C940>newWb=(oldWb);printnewWb;#<xlwt.Workbook.Workbook object at 0x000000000315F470>newWs=newWb.get_sheet(0);newWs.write(1,0,"value1");newWs.write(1,1,"value2");newWs.write(1,2,"value3");print"write new values ok";newWb.save(gConst['xls']['fileName']);print"save with same name ok";

實現了,打開,剛剛保存的,已經存在的xls文件,

然後寫入新數據的目的。

但是有個缺點,

第一次保存時的,帶格式(標題內容為紅色粗體)的內容:

重新寫入新數據,再保存時,卻丟失了之前的格式(標題沒了紅色粗體了):

11.後來還是參考:

writing to existing workbook using xlwt

中的那個標准答案,在用xlrd.open_workbook時,添加對應的參數formatting_info=True,就可以保留原有格式了。

完整代碼:

?

;importxlrd;#import xlutils;fromxlutils.import;#init xls file#styleBlueBkg= xlwt.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=wb.add_sheet(gConst['xls']['sheetName']);ws.write(0,0,"Header", headerStyle);ws.write(0,1,"CatalogNumber", headerStyle);ws.write(0,2,"PartNumber", headerStyle);wb.save(gConst['xls']['fileName']);#open existed xls file#newWb = xlutils.(gConst['xls']['fileName']);#newWb = (gConst['xls']['fileName']);oldWb=xlrd.open_workbook(gConst['xls']['fileName'], formatting_info=True);printoldWb;#<xlrd.book.Book object at 0x000000000315C940>newWb=(oldWb);printnewWb;#<xlwt.Workbook.Workbook object at 0x000000000315F470>newWs=newWb.get_sheet(0);newWs.write(1,0,"value1");newWs.write(1,1,"value2");newWs.write(1,2,"value3");print"write new values ok";newWb.save(gConst['xls']['fileName']);print"save with same name ok";

?

1

最後重新寫入的數據,就可以保留之前的格式了(標題為紅色粗體):

總結

python中操作,本身就復雜的xls文件,還是有點小麻煩的。

想要,往已經存在的xls文件中,寫入新的行,新的數據,對應的邏輯為:

  • 用xlrd.open_workbook打開已有的xsl文件

  • 注意添加參數formatting_info=True,得以保存之前數據的格式

  • 然後用,from xlutils. import ;,之後的去從打開的xlrd的Book變數中,拷貝出一份,成為新的xlwt的Workbook變數

  • 然後對於xlwt的Workbook變數,就是正常的:

  • 通過get_sheet去獲得對應的sheet

  • 拿到sheet變數後,就可以往sheet中,寫入新的數據

  • 寫完新數據後,最終save保存

  • 相關完整代碼為:

    ?

    232425262728
  • importxlwt;importxlrd;#import xlutils;fromxlutils.import;styleBoldRed=xlwt.easyxf('font: color-index red, bold on');headerStyle=styleBoldRed;wb=xlwt.Workbook();ws=wb.add_sheet(gConst['xls']['sheetName']);ws.write(0,0,"Header", headerStyle);ws.write(0,1,"CatalogNumber", headerStyle);ws.write(0,2,"PartNumber", headerStyle);wb.save(gConst['xls']['fileName']);#open existed xls file#newWb = xlutils.(gConst['xls']['fileName']);#newWb = (gConst['xls']['fileName']);oldWb=xlrd.open_workbook(gConst['xls']['fileName'], formatting_info=True);printoldWb;#<xlrd.book.Book object at 0x000000000315C940>newWb=(oldWb);printnewWb;#<xlwt.Workbook.Workbook object at 0x000000000315F470>newWs=newWb.get_sheet(0);newWs.write(1,0,"value1");newWs.write(1,1,"value2");newWs.write(1,2,"value3");print"write new values ok";newWb.save(gConst['xls']['fileName']);print"save with same name ok";

Ⅱ python 如何實現向同一個單元格追加寫內容

再網路上找到一個思路:

1:打開已經存在的.xls文件

2:一份已經存在.xls的文件

3:向文件中寫入數據

4:刪除之前的文件

5:保存一份相同的文件

文件內容大致如下,提示不存在

總結:

往已經存在的xls文件中,寫入新的行,新的數據,對應的邏輯為:

1:用xlrd.open_workbook打開已有的xsl文件

2:然後用,from xlutils. import ;,之後的去從打開的xlrd的Book變數中,拷貝出一份,成為新的xlwt的Workbook變數

3:然後對於xlwt的Workbook變數,就是正常的:

通過get_sheet去獲得對應的sheet

拿到sheet變數後,就可以往sheet中寫入新的數據

4:寫完新數據後,最終save保存

Ⅲ python怎麼向已經存在的xml文件中追加填入數據

直接操作文件肯定不現實,只能先使用python自帶模塊xml.etree 解析xml,然後找到對應的節點把數據添加進去,重新寫入文件。

Ⅳ python 如何先清除文件內容,再追加寫入

順序文件不能直接再前面追加寫入,可按下列步驟,利用下述步驟來實現1 創建一個新的文件。2 寫入要追加的數據3從原文件中讀取數據,追加寫入新文件中4 刪除原文件。5 重新命名新文件為老文件名。

Ⅳ 如何用PYTHON把一組數據寫入一個文件

一、將一組數據追加到文件中

例如:將123追加到文件1.txt的末尾

  1. definit():
    withopen('1.txt','r+')astext:
    text.read()
    text.write('123')
    text.close()
    init()




二、將一組數據覆蓋到文件中

將123覆蓋到1.txt文件中,1.txt之前的數據全沒了

definit():
withopen('1.txt','r+')astext:
text.write('123')
text.close()
init()

Ⅵ python 把一個csv數據插入到另外一個文件上

如果是在末尾添加,直接讀取csv文件的每一行,對應添加列的每一項即可。
如果想在中間插入,先讀取每一行,將其轉成列表,用列表的insert函數在指定列添加。

Ⅶ python怎麼以追加的方式寫文件

一、用Python創建一個新文件,內容是從0到9的整數, 每個數字佔一行:

#python

>>>f=open('f.txt','w') # r只讀,w可寫,a追加

>>>for i in range(0,10):f.write(str(i)+' ')

. . .

>>> f.close()

二、文件內容追加,從0到9的10個隨機整數:

#python

>>>import random

>>>f=open('f.txt','a')

>>>for i in range(0,10):f.write(str(random.randint(0,9)))

. . .

>>>f.write(' ')

>>>f.close()

三、文件內容追加,從0到9的隨機整數, 10個數字一行,共10行:

#python

>>> import random

>>> f=open('f.txt','a')

>>> for i in range(0,10):

. . . for i in range(0,10):f.write(str(random.randint(0,9)))

. . . f.write(' ')

. . .

>>> f.close()

四、把標准輸出定向到文件:

#python

>>> import sys

>>> sys.stdout = open("stdout.txt", "w")

Ⅷ 使用python編程,實現對txt文件中每行內容進行追加。


#-*-coding:utf-8-*-

importre
importos

filepath='E:\data11-20\0.025'
#filepath=os.getcwd()
lst=[]
foriinrange(3,100):
filename='plane1-conv{:03d}.out'.format(i)
fullname=(os.sep).join([filepath,filename])
withopen(fullname)asf:
s=f.read().strip()
lst1=[re.split(r's+',si.strip())[-1]forsiins.split(' ')]
lst.append(lst1)
#lst是一個二維數組,每個文件的最後一列作為一個一維數組存在裡面
#然後找出最長列的長度lmax,其他比它短的數據列,用lmax-len(i)組空格補到和它一樣長
#每組空格的數目等於數據列的第一個數據的長度
lmax=max([len(i)foriinlst])
ws=[i+[''*len(i[0])]*(lmax-len(i))foriinlst]

withopen('E:\hehe.txt','w')aswf:
wf.write(' '.join([''.join(i)foriinws]))

Ⅸ python如何讀取某csv文件數據追加到另一個c

解壓出來,看看是什麼格式的數據包!DB格式的就在工具---導入數據中導入後上傳,如果是csv文件的話,點右鍵---導入CSV文件。如果你在上傳的時候顯示不能呢個使用他人的圖片空間,你就下載一個甩手掌櫃工具箱,裡面有一個數據包處理工具,你用他吧數據包處理一下,就可以正常使用了!

Ⅹ Python如何追加JSON文件里的內容

importjson
readed=json.load(open('jsonsource.dat','r'))
json.mp(readed,open('newjsonfile.dat','w'))

熱點內容
電腦伺服器名稱怎麼查找 發布:2024-05-05 10:49:37 瀏覽:469
電腦連到代理伺服器 發布:2024-05-05 10:40:02 瀏覽:249
華為安卓手機如何投屏到雷克薩斯 發布:2024-05-05 10:37:50 瀏覽:210
微博上傳原圖 發布:2024-05-05 10:20:05 瀏覽:749
伺服器換電腦需要什麼東西 發布:2024-05-05 09:52:28 瀏覽:754
老算盤演算法 發布:2024-05-05 09:43:10 瀏覽:841
ps存儲顯示不含通道 發布:2024-05-05 09:32:35 瀏覽:103
如何用安卓做一個識物界面表 發布:2024-05-05 09:29:28 瀏覽:99
如何編譯linux內核模塊 發布:2024-05-05 09:27:25 瀏覽:169
為什麼apple驗證無法連接伺服器 發布:2024-05-05 09:20:35 瀏覽:661