我正在创建一个程序,它将从Web服务器下载.jar(java)文件,方法是读取同一游戏/应用程序的.jad文件中指定的URL.我正在使用Python 3.2.1
我设法从JAD文件中提取JAR文件的URL(每个JAD文件都包含JAR文件的URL),但是您可以想象,提取的值是type()字符串.
这是相关的功能:
def downloadFile(URL=None):
import httplib2
h = httplib2.Http(".cache")
resp, content = h.request(URL, "GET")
return content
downloadFile(URL_from_file)
Run Code Online (Sandbox Code Playgroud)
但是我总是得到一个错误,说上面函数中的类型必须是字节,而不是字符串.我尝试过使用URL.encode('utf-8'),还有字节(URL,encoding ='utf-8'),但我总是得到相同或类似的错误.
所以基本上我的问题是当URL存储在字符串类型中时如何从服务器下载文件?
我是一名正在构建GUI Web抓取应用程序的Python开发人员.最近我决定迁移到.NET框架并在C#中编写相同的应用程序(这个决定不是我的).
在Python中,我使用了Mechanize库.但是,我似乎无法在.NET中找到类似的东西.我需要的是一个以无头模式运行的浏览器,它能够填写表单,提交表单等.JavaScript解析器不是必须的,但它会非常有用.
我希望找到类似于Borland Delphi或VisualBasic for Python的工具.基本上,我希望能够轻松编写Windows应用程序,而无需对每个小部件进行编码.这样的软件存在吗?谢谢!
我意识到标题可能有点令人困惑,所以我道歉.
基本上,这是我的代码:
while i < 5:
do stuff
if i == 3:
print "i is 3"
break
Run Code Online (Sandbox Code Playgroud)
现在一切听起来都很简单吧?除了我真的不想从循环中打破,因为我希望它重新开始.所以在这种情况下,期望的结果是迭代1,2,然后当3突破时,然后继续迭代4.如何做到这一点?
我正在尝试向网络应用发送POST请求.我正在使用mechanize模块(本身是urllib2的包装器).无论如何,当我尝试发送POST请求时,我得到了UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 0: ordinal not in range(128).我试图把unicode(string)的unicode(string, encoding="utf-8"),unicode(string).encode()等等,没有什么工作-无论是返回的错误之上,或TypeError: decoding Unicode is not supported
我查看了类似问题的其他SO答案,但都没有帮助.
提前致谢!
编辑:产生错误的示例:
prda = "š???" #valid UTF-8 characters
prda # typing in python shell
'\xc5\xa1\xc4\x91\xc4\x87\xc4\x8d'
print prda # in shell
š???
prda.encode("utf-8") #in shell
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 0: ordinal not in range(128)
unicode(prda)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 0: …Run Code Online (Sandbox Code Playgroud) 我试图从一个文件QLabel()显示一个pixmapJPG图像(由于它是从网上下载的,它不能在资源文件中),但我在加载它时遇到问题.代码很简单:
label = QLabel()
label.setPixmap(QPixmap("image.jpg"))
Run Code Online (Sandbox Code Playgroud)
它适用于PNG文件,但不适用于JPG文件.我谷歌搜索了很多,发现我需要将"imageformats"文件夹放在脚本所在的同一文件夹中.然而,即使在这样做之后(是的,qjpeg4.dll其他人也在那里),它仍然无效.我也尝试过
path = r"C:\Users\Deusdies\Documents\Work\myapp\imageformats"
app.addLibraryPath(path)
Run Code Online (Sandbox Code Playgroud)
但这也没有帮助.
再次,它加载PNGs很好,但它不会加载JPGs.我甚至在此之前也注意到它也不会加载ICO,但我认为这是一个无关的问题 - 但现在看来并不是这样.
值得注意的是,应用程序此时未转换为.exe- 它通过python.exe解释器来运行PowerShell.
我的开发环境是Windows 7 x64,PySide 1.1.0
我怎么解决这个问题?
...或者是使用PyQT快速GUI开发我需要的一切吗?
我经历了一些在线工作,其中大多数都已经过时了,大部分代码都不起作用,或者它们的编写方式非常糟糕.
我正在尝试进行机械化解析的html是:
<select id="topic_id2" name="topics[]" title="blabla" tabindex="4" class="createSelect">
here go options
Run Code Online (Sandbox Code Playgroud)
但是在它下面还有另一个下拉列表,其代码如下:
<select id="topic_id3" name="topics[]" title="optional" tabindex="5" class="createSelect">
Run Code Online (Sandbox Code Playgroud)
现在,如果它有帮助,我不需要从后者中选择任何值,因为它是可选的.
当我尝试
br = mechanize.Browser()
br.select_form(name="form")
br["topics[]"] = ["Internet"]
Run Code Online (Sandbox Code Playgroud)
我明白了:
mechanize._form.AmbiguityError: more than one control matching name 'topics[]'
Run Code Online (Sandbox Code Playgroud)
有没有办法可以使用mechanize.Browser()保留基于其id的控件(同时保留所有其他表单语法)?
谢谢
我正在使用Python和PySide构建一个相当复杂的应用程序.最后发布的那天即将到来,所以我想将这个应用程序构建为exe.
但是,我的手上有一个奇怪的问题.我过去使用过PyInstaller(顺便使用版本2),从来没有发生过这种情况.
基本上,当我使用--console标志构建应用程序时,它工作正常 - 但它打开控制台窗口.当我使用window flag(-w)构建应用程序时,它不能正常工作.它开始和一切,但有所有这些奇怪的故障.例如,加载文本文件通常会引发BadFileDescriptor错误(在控制台模式下不会发生),并且应用程序在执行某项任务后崩溃.更糟糕的是,任务是循环,并且第一次执行正常,但是当它再次开始工作时,它会崩溃.
当我查看minidump文件时,有一些关于QtGui4.dll文件的内存访问冲突的错误.同样,这在控制台模式下不会发生.
有人有主意吗?
我有一个用Python编写的多线程应用程序,其中一个线程"关注"GUI,另一个是工作线程.但是,工作线程有两个主要功能(或者说两个主要工作),我需要告诉run函数要完成哪个工作.
所以我想到的是在工作线程中创建一个运行函数,该函数将采用一个参数(除了"self").参数将是"创建"或上传.没有更多的麻烦,这里有一些代码,我到目前为止:
GUI.py
class GUI(QMainWindow):
def __init__(self, parent=None):
super, etc
self.worker = worker.Worker()
def create(self):
self.worker.start()
def upload(self):
self.worker.start()
Run Code Online (Sandbox Code Playgroud)
Worker.py
class Worker(QThread):
def __init__(self, parent=None):
super, etc
def run(self):
self.create_data() # OR self.upload_data(), depends
Run Code Online (Sandbox Code Playgroud)
所以问题是,如何告诉worker.start()我希望它执行哪些功能?我意识到可以直接使用worker.run()方法,但是我用"PyQT快速GUI开发"告诉我永远不要直接调用worker.run(),并且总是使用worker.start().
python ×9
pyqt ×4
qt ×3
pyside ×2
.net ×1
automation ×1
browser ×1
c# ×1
html ×1
http ×1
mechanize ×1
post ×1
pyinstaller ×1
pyqt4 ×1
python-3.x ×1
unicode ×1
web-scraping ×1
wxpython ×1