python文件寫追加
1. python 如何先清除文件內容,再追加寫入
順序文件不能直接再前面追加寫入,可按下列步驟,利用下述步驟來實現1 創建一個新的文件。2 寫入要追加的數據3從原文件中讀取數據,追加寫入新文件中4 刪除原文件。5 重新命名新文件為老文件名。
2. Python追加寫入文件並換行
將知掘字元串 「123」 追加寫入 a.txt 文件,頃知並換行。
mode='a',即追加(append)模式搭乎核,mode=' r' 則為讀(read).
鏈接:https://www.jianshu.com/p/947e2308ac6c
3. 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保存
- 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";
相關完整代碼為:
?
2324252627284. 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保存
5. python怎麼向已經存在的xml文件中追加填入數據
直接操作文件肯定不現實,只能先使用python自帶模塊xml.etree 解析xml,然後找到對應的節點把數據添加進去,重新寫入文件。
6. python文件的創建、寫入、讀取
最近在構思如何 本地化股票數據 ,覺得有必要復習一下python對文件的創建、寫入、和讀取。
首先先了解一下對於文件的處理都有常用函數:
open(path, mode):生成文件對象。
參數說明:path文件路徑、mode文件的操作模式
文件的操作模式說明
1、寫入模式:『w』創建、『wb』創建二進制、『a』追加內容、『ab』二進制形式追加內容(另外如在後面添加『+』號,附加讀取功能如:『w+』)
可用write()、writelines()寫入內容、close()保存文件
注意:windows系統在輸入寫入中文時,輸入參數 encoding=『utf-8』
可用read()函數對文件內容進行讀取
注意:讀取的內容是從結尾開始的,用seek(0)函數指定讀取位置為開頭
這里我用『w+』模式來舉例
2、讀取模式:『r』讀取內容、『rb』讀取二進制內容(區別於寫入模式的讀取,讀取模式從開頭開始讀取)
除了read()、還有readline()調用一次返回一行數據、readlines()返回每行數據list
另外還有mode屬性:看查文件對象的模式、closed屬性:判斷文件是否關閉、name屬性:返迴文件名
這里我還要介紹一個關鍵字with,他是一個表達式能為調用的文件對象別名,且自動關閉文件。
7. 使用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]))
8. 以追加模式打開文件時,文件指針指向文件尾Python代碼
要在 Python 中以追加模式打開文件,請使用帶有 mode 參數的函數:open()"a"
在追加模式下,文件指針位於簡隱塵文件末尾,因此寫入文件的任何數據都將追加到文件末尾。當您想要將新數據添加到現有文件的末尾而不覆蓋現有數據時,攔禪這很有用。攜伍
回答不易望請採納