当前位置:首页 » 文件传输 » python上传大文件
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

python上传大文件

发布时间: 2022-01-30 04:40:14

Ⅰ 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以上的大文件

如果你没那么大的内存 解决方法有几个:

  1. 使用swap 一次性read()读取

  2. 系统层面分割大文件为数个小于系统内存的小文件,分别读取

  3. 使用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 快很多。