本文目錄一覽:
python 讀取本地數據然後插入到另一個數據庫中
class Buffer(object):
MAXSIZE = 8192
def __init__(self, conn, sql):
self.conn = conn
self.sql = sql
self.buffer = []
def append(self, data):
self.buffer.append(data)
if len(self.buffer) self.MAXSIZE:
self.flush()
def flush(self):
data, self.buffer = self.buffer, []
curr = self.conn.cursor()
curr.executemany(self.sql, data)
self.conn.commit()
# here are your code for init database connect conn_src and conn_store…
buff = Buffer(conn_store, “insert into sybase_user values (%s, %s)”)
sql_query = “select a.id, a.name from user_info a where a.id=%s”
curr_src = conn_src.cursor()
curr_src.execute(sql_query, ‘0001’)
for row in curr_src:
buff.append(row)
buff.flush()
Python3 – 讀寫字節數據
讀寫二進制文件,比如圖片,聲音文件等等。
使用模式為 rb 或 wb 的 open() 函數來讀取或寫入二進制數據。比如:
在讀取二進制數據時,需要指明的是所有返回的數據都是字節字符串格式的,而不是文本字符串。
類似的,在寫入的時候,必須保證參數是字節字符串或字節數組對象等。
讀取二進制數據時,字節字符串和文本字符串的語義差異可能會導致一個潛在的陷阱。 特別需要注意的是,索引和迭代操作,返回的是字節的值而不是字節字符串。比如:
如果從二進制模式的文件中讀取或寫入文本數據,必須確保要進行解碼和編碼操作。比如:
python 讀取大文件數據怎麼快速讀取
python中讀取數據的時候有幾種方法,無非是read,readline,readlings和xreadlines幾種方法,在幾種方法中,read和xreadlines可以作為迭代器使用,從而在讀取大數據的時候比較有效果.
在測試中,先創建一個大文件,大概1GB左右,使用的程序如下:
[python] view plaincopyprint?
import os.path
import time
while os.path.getsize(‘messages’) 1000000000:
f = open(‘messages’,’a’)
f.write(‘this is a file/n’)
f.close()
print ‘file create complted’
在這裡使用循環判斷文件的大小,如果大小在1GB左右,那麼結束創建文件。–需要花費好幾分鐘的時間。
測試代碼如下:
[python] view plaincopyprint?
#22s
start_time = time.time()
f = open(‘messages’,’r’)
for i in f:
end_time = time.time()
print end_time – start_time
break
f.close()
#22s
start_time = time.time()
f = open(‘messages’,’r’)
for i in f.xreadlines():
end_time = time.time()
print end_time – start_time
break
f.close()
start_time = time.time()
f = open(‘messages’,’r’)
k= f.readlines()
f.close()
end_time = time.time()
print end_time – start_time
使用迭代器的時候,兩者的時間是差不多的,內存消耗也不是很多,使用的時間大概在22秒作用
在使用完全讀取文件的時候,使用的時間在40s,並且內存消耗相當嚴重,大概使用了1G的內存。。
其實,在使用跌倒器的時候,如果進行連續操作,進行print或者其他的操作,內存消耗還是不可避免的,但是內存在那個時候是可以釋放的,從而使用迭代器可以節省內存,主要是可以釋放。
而在使用直接讀取所有數據的時候,數據會保留在內存中,是無法釋放這個內存的,從而內存卡死也是有可能的。
在使用的時候,最好是直接使用for i in f的方式來使用,在讀取的時候,f本身就是一個迭代器,其實也就是f.read方法
如何在python中讀寫和存儲matlab的數據文件
使用sicpy.io即可.sicpy.io提供了兩個函數loadmat和savemat,非常方便.
import scipy.io as sio
import matplotlib.pyplot as plt
import numpy as np
#matlab文件名
matfn=u’E:/python/測試程序/162250671_162251656_1244.mat’
data=sio.loadmat(matfn)
plt.close(‘all’)
xi=data[‘xi’]
yi=data[‘yi’]
ui=data[‘ui’]
vi=data[‘vi’]
plt.figure(1)
plt.quiver( xi[::5,::5],yi[::5,::5],ui[::5,::5],vi[::5,::5])
plt.figure(2)
plt.contourf(xi,yi,ui)
plt.show()
sio.savemat(‘saveddata.mat’, {‘xi’: xi,’yi’: yi,’ui’: ui,’vi’: vi})
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/307249.html