本文目錄一覽:
- 1、Python的文件上傳
- 2、請問 如何用python寫一個帶文件上傳功能的界面
- 3、樹莓派 python 如何將本地文件上傳到指定的服務器頁面上
- 4、如何把python代碼上傳到服務器上
- 5、python selenium怎麼自動上傳文件
- 6、如何在 Python 中模擬 post 表單來上傳文件
Python的文件上傳
做的是web開發嗎?可以用框架來解決這個問題,推薦使用Django框架,靈活強大,特別適合做新聞、博客類網站。用Python上傳文件,要用到中間件,找一個適合你用的中間件,通過這個中間件上傳,如果是自己寫的話會很麻煩。存入數據庫的不應該是文件而應該是文件的路徑,存入了多少條數據這個就比較好實現了,用一個計數變量,保存一條就增加1,最後返回這個變量就可以了。
請問 如何用python寫一個帶文件上傳功能的界面
#!/usr/bin/env python
import cgi, os
import cgitb; cgitb.enable()
try: # Windows needs stdio set for binary mode.
import msvcrt
msvcrt.setmode (0, os.O_BINARY) # stdin = 0
msvcrt.setmode (1, os.O_BINARY) # stdout = 1
except ImportError:
pass
form = cgi.FieldStorage()
# Generator to buffer file chunks
def fbuffer(f, chunk_size=10000):
while True:
chunk = f.read(chunk_size)
if not chunk: break
yield chunk
# A nested FieldStorage instance holds the file
fileitem = form[‘file’]
# Test if the file was uploaded
if fileitem.filename:
# strip leading path from file name to avoid directory traversal attacks
fn = os.path.basename(fileitem.filename)
f = open(‘files/’ + fn, ‘wb’, 10000)
# Read the file in chunks
for chunk in fbuffer(fileitem.file):
f.write(chunk)
f.close()
message = ‘The file “‘ + fn + ‘” was uploaded successfully’
else:
message = ‘No file was uploaded’
print “””\
Content-Type: text/html\n
htmlbody
p%s/p
/body/html
“”” % (message,)
樹莓派 python 如何將本地文件上傳到指定的服務器頁面上
以下是單個文件的,不確定你的文件夾是什麼意思,可以壓縮下再上傳(方法一樣,調用zip命令)
我的實現方法:調用終端的curl,以下為代碼平片段,實現的功能是上傳log文件到服務器,供參考:
def post_log(self, post_url, del_source_file=True):
”’
post log to log server
”’
if self.log_path:
command = “curl -s -F log=@{0} {1}”.format(self.log_path, post_url)
return_str = os.popen(command).read()
logging.debug(return_str)
# print return_str
if return_str == “success”:
if del_source_file:
del_command = “sudo rm {0}”.format(self.log_path)
os.system(del_command)
return True
else:
return False
return False
如何把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 = ‘not@all.com’,
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文件
python selenium怎麼自動上傳文件
給你個例子:
if not img_path:
img_path = os.path.abspath(“../res/cvd_test.jpg”)
else:
img_path = path.abspath(img_path)
# wait for the file upload input element visible
up_img_input = WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located((By.ID, “updli_file”))
)
up_img_input.send_keys(img_path)
send_img_btn = WebDriverWait(self.driver, 10).until(
EC.element_to_be_clickable((By.ID, “send-pic-img”))
)
# time.sleep(self.send_interval)
send_img_btn.click()
上面實現的工作就是,找到上傳組件的那個input元素,然後把你要上傳的文件的路徑發送給ta
如何在 Python 中模擬 post 表單來上傳文件
在機器上安裝了Python的setuptools工具,可以通過下面的命令來安裝 poster:
1
a href=”;tn=44039180_cprfenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y4mW0sP17WuH63nHw-Pj790ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnWmYnHczP1bkPWfkPjcznHmd” target=”_blank” class=”baidu-highlight”easy_install/a poster
裝完之後,安裝下面代碼就可以實現post表單上傳文件了:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
import urllib2
# 在 urllib2 上註冊 http 流處理句柄
register_openers()
# 開始對文件 “DSC0001.jpg” 的 multiart/form-data 編碼
# “image1” 是參數的名字,一般通過 HTML 中的 input 標籤的 name 參數設置
# headers 包含必須的 Content-Type 和 Content-Length
# datagen 是一個生成器對象,返回編碼過後的參數
datagen, headers = multipart_encode({“image1”: open(“DSC0001.jpg”, “rb”)})
# 創建請求對象(localhost服務器IP地址,5000a href=”;tn=44039180_cprfenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y4mW0sP17WuH63nHw-Pj790ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnWmYnHczP1bkPWfkPjcznHmd” target=”_blank” class=”baidu-highlight”服務器端口/a)
request = urllib2.Request(“”, datagen, headers)
# 實際執行請求並取得返回
print urllib2.urlopen(request).read()
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/298058.html