csv txt讀寫及模式介紹

2022-09-15 07:30:12 字數 3320 閱讀 8920

r以讀方式開啟檔案,可讀取檔案資訊

w已寫方式開啟檔案,可向檔案寫入資訊。如檔案存在,則清空,再寫入

a以追加模式開啟檔案,開啟檔案可指標移至末尾,檔案不存在則建立

r+以讀寫方式開啟檔案,可對檔案進行讀和寫操作

w+消除檔案內容,以讀寫方式開啟檔案

a+以讀寫方式開啟檔案,檔案指標移至末尾

b以二進位制開啟檔案

#coding=utf-8

import csv

import codecs

import sys

# reload(sys)

# sys.setdefaultencoding('utf-8')

#建立寫入

csvfile=open('csv_test.csv','wb')

# csvfile.write(codecs.bom_utf8)#防止檔案中顯示中文亂碼(並非亂碼),若注意生成檔案編碼,用notepad++轉碼也能正常顯示。

writer=csv.writer(csvfile)

writer.writerow(['姓名','年齡','**'])

data=[('alex','23','139'),('tom','43','189')]

writer.writerows(data)

csvfile.close()

#讀取csvfile=open('csv_test.csv','rb')

reader=csv.reader(csvfile)

for line in reader:

print line

csvfile.close()

例子:表單提交後的結果是:

rows = [,,,

,]這樣就可以直接呼叫dictwriter.writerows方法來處理了:

import csv

fieldnames = ['column1', 'column2', 'column3', 'column4']

dict_writer = csv.dictwriter(file('your.csv', 'wb'), fieldnames=fieldnames)

dict_writer. writeheader(fieldnames) # csv第一行需要自己加入

dict_writer.writerows(rows) # rows就是表單提交的資料

*注意:這裡的csv檔案寫入需要external method的支援,因為在zope中由於許可權沙箱的問題是不能直接操作csv模組來讀寫檔案系統的。

#coding=utf-8

#檔案建立和寫入

f=open('test.txt','w')

f.write('hello world')#資料只寫到快取,未儲存到檔案

f.close()#儲存到檔案

f1=open('test.txt','r+')#r+模式不會清空檔案,而是替換內容

f1.write('hello boy')

f1.close()

f2=open('test.txt','a')#a模式實現追加

f2.write('\nhello girl')

f2.writelines(['\n你好','\n再見'])#多行寫入

f2.flush()#將修改寫入檔案,無須關閉

demo:

#檔案讀取(按指標)

f3=open('test.txt')

print f3.read(1)

f3.seek(1,1)

'''f.seek(偏移量,選項)

(1)選項=0,表示將檔案指標指向從檔案頭部到「偏移量」位元組處

(2)選項=1,表示將檔案指標指向從檔案的當前位置,向後移動「偏移量」位元組

(3)選項=2,表示將檔案指標指向從檔案的尾部,向前移動「偏移量」位元組

'''print f3.read(1)

print f3.tell()#獲取指標位置

f3.close()

#檔案讀取(按行)

'''f3.read()#讀取所有

f3.readline()#逐行讀取

f3.next()#類readline,未讀到報錯

f3.readlines()#列表形式存放

for i in open('test.txt'):

print i

'''#檔案操作(查詢)

#方法一:全內容查詢

f4=open('test.txt')

source=f4.read()

f4.close()

s=len(re.findall('hello',source))

print s

#方法二:按行查詢

f5=open('test.txt')

count=0

for i in f5.readlines():

li=re.findall('hello',i)

if len(li)>0:

count=count+len(li)

print 'search',count,'hello'

f5.close()

#檔案操作(替換)例項:把test.txt 中的hello全部換為"hi",並把結果儲存到myhello.txt中。

f6=open('test.txt')

f7=open('myhello.txt','a')

for i in f6.readlines():

f7.write(i.replace('hello','hi'))

f6.close()

f7.close()

#例項:讀取檔案test.txt內容,去除空行和注釋行後,以行為單位進行排序,並將結果輸出為result.txt。

f = open('cdays-4-test.txt')

result = list()

for line in f.readlines(): # 逐行讀取資料

line = line.strip() #去掉每行頭尾空白

if not len(line) or line.startswith('#'): # 判斷是否是空行或注釋行

continue #是的話,跳過不處理

result.sort() #排序結果

print result

open('result.txt','w').write('%s' % '\n'.join(result)) #儲存入結果檔案

PHP CLI模式介紹及使用教程

看看全稱就知道了,php cli是php command line inte ce的簡稱,即php命令列介面,在windows和linux下都是支援php cli模式的,其實這兩者,我以前都寫過文章 一 window在命令列下執行php 程式 二 linux使用crontab實現定時任務 php c...

檔案讀寫模式

r僅讀,待開啟的檔案必須存在。w僅寫,若檔案已存在,內容將先被清空。a僅寫,若檔案已存在,內容不會清空。r 讀寫,待開啟的檔案必須存在。w 讀寫,若檔案已存在,內容將先被清空。a 讀寫,若檔案已存在,內容不會清空。rb僅讀,二進位制,待開啟的檔案必須存在。wb僅寫,二進位制,若檔案已存在,內容將先被...

JAVA mysql讀寫分離外掛程式介紹

kingshard是乙個由go開發高效能mysql proxy專案,kingshard在滿足基本的讀寫分離的功能上,致力於簡化mysql分庫分表操作 能夠讓dba通過kingshard輕鬆平滑地實現mysql資料庫擴容。kingshard的效能是直連mysql效能的80 以上。cobar 是提供關係...