Python urllib2文件上传问题 [英] Python urllib2 file upload problems
问题描述
我目前正在尝试使用urllib2和 urllib2_file 启动文件上传图书馆.这是我的代码:
I'm currently trying to initiate a file upload with urllib2 and the urllib2_file library. Here's my code:
import sys
import urllib2_file
import urllib2
URL='http://aquate.us/upload.php'
d = [('uploaded', open(sys.argv[1:]))]
req = urllib2.Request(URL, d)
u = urllib2.urlopen(req)
print u.read()
我已将此.py文件放在我的文档"目录中,并将其快捷方式放在发送至"文件夹中(快捷方式URL为).
I've placed this .py file in my My Documents directory and placed a shortcut to it in my Send To folder (the shortcut URL is ).
当我右键单击文件时,选择发送到",然后选择"Aquate"(我的python),它会打开命令提示符并显示一秒钟,然后将其关闭.什么都没有上传.
When I right click a file, choose Send To, and select Aquate (my python), it opens a command prompt for a split second and then closes it. Nothing gets uploaded.
我知道可能会发生错误,因此我逐行将代码键入到CL python中.
当我运行u=urllib2.urlopen(req)
行时,我没有得到任何错误.
替代文字http://www.aquate.us/u/55245858877937182052.jpg
I knew there was probably an error going on so I typed the code into CL python, line by line.
When I ran the u=urllib2.urlopen(req)
line, I didn't get an error;
alt text http://www.aquate.us/u/55245858877937182052.jpg
相反,光标只是开始在该行下面的新行上闪烁.我等了几分钟,看是否会发生什么,但是事情就这样了.要使其停止,我必须按ctrl + break.
instead, the cursor simply started blinking on a new line beneath that line. I waited a couple of minutes to see if something would happen but it just stayed like that. To get it to stop, I had to press ctrl+break.
这个脚本怎么了?
提前谢谢!
忘了-当我在没有请求数据(文件)的情况下运行脚本时,它的运行就像一个魅力. urllib2_file是否有问题?
Forgot to mention -- when I ran the script without the request data (the file) it ran like a charm. Is it a problem with urllib2_file?
:
import MultipartPostHandler, urllib2, cookielib,sys
import win32clipboard as w
cookies = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies),MultipartPostHandler.MultipartPostHandler)
params = {"uploaded" : open("c:/cfoot.js") }
a=opener.open("http://www.aquate.us/upload.php", params)
text = a.read()
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardText(text)
w.CloseClipboard()
如果您通过命令行运行该代码,那么它的工作原理就像一个魅力.
That code works like a charm if you run it through the command line.
推荐答案
如果您使用的是Python 2.5或更高版本,则urllib2_file
既不必要又不受支持,因此请检查您正在使用的版本(并可能要升级).
If you're using Python 2.5 or newer, urllib2_file
is both unnecessary and unsupported, so check which version you're using (and perhaps upgrade).
如果您使用的是Python 2.3或2.4(urllib2_file
支持的唯一版本),请尝试运行
If you're using Python 2.3 or 2.4 (the only versions supported by urllib2_file
), try running the sample code and see if you have the same problem. If so, there is likely something wrong either with your Python or urllib2_file
installation.
此外,您似乎并没有使用urllib2_file
的两种受支持格式中的任何一种来处理POST数据.尝试改用以下两行中的一个:
Also, you don't seem to be using either of urllib2_file
's two supported formats for POST data. Try using one of the following two lines instead:
d = ['uploaded', open(sys.argv[1:])]
## --OR-- ##
d = {'uploaded': open(sys.argv[1:])}
这篇关于Python urllib2文件上传问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!