本文目录一览:
- 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()