Ⅰ python ftplib 傳輸文件大小的文件,如何傳輸較大文件
沒有矛盾啊。只要你不一口氣將所有文件都載入到內存里去。使用FTP協議,發送大文件不成問題。
FTP協議是個很簡單的協議。你可以仔細看一下原理。然後再配合python的ftplib看。你會發現那些cmd就是FTP的命令。
Ⅱ python哪些web框架適合用來做大文件上傳服務
這個果斷要用tornado啊。html5的 Filesystem Api,可以讀取一個本地文件為blob,然後可以按任意位元組切分slice。這不就是斷點上傳么。Google Gears時代我就實現了個多線程上傳的。python的socket手寫http協議。很好玩。
轉載僅供參考,版權屬於原作者。祝你愉快,滿意請採納哦
Ⅲ 如何用python最快的獲取大文件的最後幾行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env python
import os
import sys
def get_last_n_lines(logfile, n):
blk_size_max = 4096
n_lines = []
with open(logfile, 'rb') as fp:
fp.seek(0, os.SEEK_END)
cur_pos = fp.tell()
while cur_pos > 0 and len(n_lines) < n:
blk_size = min(blk_size_max, cur_pos)
fp.seek(cur_pos - blk_size, os.SEEK_SET)
blk_data = fp.read(blk_size)
assert len(blk_data) == blk_size
lines = blk_data.split('\n')
# adjust cur_pos
if len(lines) > 1 and len(lines[0]) > 0:
n_lines[0:0] = lines[1:]
cur_pos -= (blk_size - len(lines[0]))
else:
n_lines[0:0] = lines
cur_pos -= blk_size
fp.seek(cur_pos, os.SEEK_SET)
if len(n_lines) > 0 and len(n_lines[-1]) == 0:
del n_lines[-1]
return n_lines[-n:]
def main():
if len(sys.argv) != 3:
sys.exit('usage: %s logfile n_lines' % sys.argv[0])
for line in get_last_n_lines(sys.argv[1], int(sys.argv[2])):
print line
if __name__ == '__main__':
main()
Linux平台有一個tail命令,tail -f filename.log 就會列印文件最後新增加的內容
Ⅳ Python的文件上傳
Python中使用GET方法實現上傳文件,下面就是用Get上傳文件的例子,client用來發Get請求,server用來收請求。
請求端代碼:
importrequests#需要安裝requests
withopen('test.txt','rb')asf:
requests.get('http://伺服器IP地址:埠',data=f)
服務端代碼:
varhttp=require('http');
varfs=require('fs');
varserver=http.createServer(function(req,res){
//console.log(req);
varrecData="";
req.on('data',function(data){
recData+=data;
})
req.on('end',function(data){
recData+=data;
fs.writeFile('recData.txt',recData,function(err){
console.log('filereceived');
})
})
res.end('hello');
})
server.listen(埠);
Ⅳ 怎麼上傳超過10MB的文件
storage管理頁面里單個文件現在只能上傳5m以下的,svn上傳單個文件大小不超過20M。
php sdk里有上傳大文件的功能,python這邊還沒加上。
Ⅵ 如何用 Python 做大文件上傳的服務端
這個果斷要用tornado啊。html5的 Filesystem Api,可以讀取一個本地文件為blob,然後可以按任意位元組切分slice。這不就是斷點上傳么。
Ⅶ 如何用python快速讀取幾G以上的大文件
如果你沒那麼大的內存 解決方法有幾個:
使用swap 一次性read()讀取
系統層面分割大文件為數個小於系統內存的小文件,分別讀取
使用python 按數據大小逐塊讀取,使用完數據即釋放該部分內存:
whileTrue:
chunk_data=file_object.read(chunk_size)
ifnotchunk_data:
break
yieldchunk_data
Ⅷ python 讀取大文件數據怎麼快速讀取
python中讀取數據的時候有幾種方法,無非是read,readline,readlings和xreadlines幾種方法,在幾種方法中,read和xreadlines可以作為迭代器使用,從而在讀取大數據的時候比較有效果.
在測試中,先創建一個大文件,大概1GB左右,使用的程序如下:
[python] view plainprint?
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 plainprint?
#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 處理大文件有什麼推薦的方式么
以前弄過一些組學的文件,如果是純文本的話不要用 for..in..語句,用 readlines 讀入幾千行後再用 readline 處理,如果是 utf8 之類非等長的位元組編碼的話先按 byte 編碼讀入文本必要時再解析成別的,最後把文件塞到內存檔再加個多進程。如果要求不高用 bash+awk 比 python 快很多。