Ⅰ 如何把python代碼上傳到伺服器上
使用pip或easy_install可以管理和安裝python的package包,實際上它們都是從pypi伺服器中搜索和下載package的。目前在pypi伺服器上,有超過三萬多個package,同時還允許我們將自己的代碼也上傳發布到伺服器上。這樣,世界上的所有人都能使用pip或easy_install來下載使用我們的代碼了。
具體步驟如下:
首先創建項目文件和setup文件。
目錄文件結構如下:
project/
simpletest/
__init__.py
test.py
setup.py
假設項目文件只有一個simpletest包,裡面有一個test.py文件。
創建的setup.py文件格式大致如下,其中,install_requires欄位可以列出依賴的包信息,用戶使用pip或easy_install安裝時會自動下載依賴的包。詳細的格式參考文檔。
from setuptools import setup, find_packages
setup(
name = 'simpletest',
version = '0.0.1',
keywords = ('simple', 'test'),
description = 'just a simple test',
license = 'MIT License',
install_requires = ['simplejson>=1.1'],
author = 'yjx',
author_email = '[email protected]',
packages = find_packages(),
platforms = 'any',
)
然後將代碼打包。
打包只需要執行python
setup.py xxx命令即可,其中xxx是打包格式的選項,如下:
# 以下所有生成文件將在當前路徑下 dist 目錄中
python setup.py bdist_egg # 生成easy_install支持的格式
python setup.py sdist # 生成pip支持的格式,下文以此為例
發布到pypi。
發布到pypi首先需要注冊一個賬號,然後進行如下兩步:
注冊package。輸入python setup.py register。
上傳文件。輸入python setup.py sdist upload。
安裝測試
上傳成功後,就可以使用pip來下載安裝了。
另外,pypi還有一個測試伺服器,可以在這個測試伺服器上做測試,測試的時候需要給命令指定額外的"-r"或"-i"選項,如python
setup.py register -r "",python
setup.py sdist upload -r "",pip
install -i "" simpletest。
發布到測試伺服器的時候,建議在linux或cygwin中發布,如果是在windows中,參考文檔,需要生成.pypirc文件
Ⅱ 怎麼用http上傳一個文件到伺服器 python
首先,標准HTTP協議對上傳文件等表單的定義在這里:wwwietforg/rfc/rfc1867txt 大概數據包格式如下:
單文件:
Content-type: multipart/form-data, boundary=AaB03x
--AaB03x
content-disposition: form-data; name="field1"
Joe Blow
--AaB03x
content-disposition: form-data; name="pics"; filename="file1.txt"
Content-Type: text/plain
... contents of file1.txt ...
--AaB03x--
多文件:
Content-type: multipart/form-data, boundary=AaB03x
--AaB03x
content-disposition: form-data; name="field1"
Joe Blow
--AaB03x
content-disposition: form-data; name="pics"
Content-type: multipart/mixed, boundary=BbC04y
--BbC04y
Content-disposition: attachment; filename="file1.txt"
其次,python上傳文件的幾種方法:
1 自己封裝HTTP的POST數據包:http//stackoverflowcom/questions/680305/using-multipartposthandler-to-post-form-data-with-python
import httplibimport mimetypesdef post_multipart(host, selector, fields, files): content_type, body = encode_multipart_formdata(fields, files) h = httplib.HTTP(host) h.putrequest('POST', selector) h.putheader('content-type', content_type) h.putheader('content-length', str(len(body))) h.endheaders() h.send(body) errcode, errmsg, headers = h.getreply() return h.file.read() def encode_multipart_formdata(fields, files): LIMIT = '----------lImIt_of_THE_fIle_eW_$' CRLF = '\r\n' L = [] for (key, value) in fields: L.append('--' + LIMIT) L.append('Content-Disposition: form-data; name="%s"' % key) L.append('') L.append(value) for (key, filename, value) in files:
Ⅲ python文件轉位元組流上傳
圖片,視頻都是二進制的,你讀取的時候寫 rb ,然後你在請求的時候記得把視頻轉成.content
像這樣load_src = requests.get("http://"+srcs[i], headers=headers).content
Ⅳ python、FileReference、上傳文件
數據微化處理傳送
Ⅳ 如何用python實現上傳本地指定文件夾下文件(文件名稱均為數字,以數字順序上傳)到遠端指定路徑
這要看你的本地與遠端允許哪些通信方式(協議)
Ⅵ 如何在 Python 中模擬 post 表單來上傳文件
最近有個將文件上傳到內部web伺服器上的任務,於是參考了網上部分源碼用python寫了這個小程序,代碼如下:
[python]view plain
#coding:utf-8
'''''
Createdon2015.3.19
@author:damofy
'''
importos
importtime
importsys
importurllib2
'''''
filename待上傳的文件
fieldname表單域中的name屬性
'''
defCreateBody(filename,fieldname,strBoundary):
bRet=False
sData=[]
sData.append('--%s'%strBoundary)
#'Content-Disposition:form-data;name="uploadfile";filename="XX-Net-1.3.6.zip"'
sData.append('Content-Disposition:form-data;name="%s";'%fieldname+'filename="%s"'%os.path.basename(filename))
sData.append('Content-Type:%s '%'application/octet-stream')
try:
pFile=open(filename,'rb')
sData.append(pFile.read())
sData.append('--%s-- '%strBoundary)
bRet=True
finally:
pFile.close()
returnbRet,sData
defuploadfile(http_url,filename,fieldname):
ifos.path.exists(filename):
filesize=os.path.getsize(filename)
print('file:'+filename+'is%dbytes!'%filesize)
else:
print('file:'+filename+'isn'texists!')
returnFalse
strBoundary='---------------------------%s'%hex(int(time.time()*1000))
bRet,sBodyData=CreateBody(filename,fieldname,strBoundary)
ifTrue==bRet:
http_body=' '.join(sBodyData)
stReq=urllib2.Request(http_url,http_body)
stReq.add_header('User-Agent','Mozilla/5.0')
stReq.add_header('Content-Length:','%d'%filesize)
stReq.add_header('Content-Type','multipart/form-data;boundary=%s'%strBoundary)
resp=urllib2.urlopen(stReq,timeout=5)
#getresponse
msg=resp.read()
print("Responsecontent: "+msg)
else:
print("CreateBodyfailed!")
returnbRet
if__name__=='__main__':
iflen(sys.argv)>2:
http_url=sys.argv[1]
filename=sys.argv[2]
else:
print('pythonupload.pyhttp://10.20.131.23/upload./test.dat')
sys.exit()
#參數3"uploadfile"是post表單中的name屬性,需要與服務端保持一致
uploadfile(http_url,filename,'uploadfile')
Ⅶ 如何用 Python 做大文件上傳的服務端
這個果斷要用tornado啊。html5的 Filesystem Api,可以讀取一個本地文件為blob,然後可以按任意位元組切分slice。這不就是斷點上傳么。
Google Gears時代我就實現了個多線程上傳的。python的socket手寫http協議。很好玩。
Ⅷ python能直接通過url上傳文件嗎
可以這樣寫:
urls = sel.xpath('//li[@class="next_article"]/a/@href').extract()
for url in urls:
url = "http://blog.csdn.net" + url
yield Request(url, callback=self.parse)
Ⅸ 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(埠);
Ⅹ pythonweb前後端分離項目怎麼實現單文件上傳
在HTML上傳到後台接收時,又要把接收到的文件或圖片復制到項目下面,要不然就沒顯示。所以自己總結了下怎麼樣把文件上傳到指定文件目錄下
感覺還挺實用的,別人通過區域網訪問我的項目來上傳圖片,我的項目也能接收復制到指定目錄下,伺服器沒試過,但還是來分享下。