小编Bo *_*ich的帖子

在Python 3中从Web下载文件

我正在创建一个程序,它将从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存储在字符串类型中时如何从服务器下载文件?

python python-3.x

294
推荐指数
6
解决办法
26万
查看次数

C#(.NET)的无头浏览器?

我是一名正在构建GUI Web抓取应用程序的Python开发人员.最近我决定迁移到.NET框架并在C#中编写相同的应用程序(这个决定不是我的).

在Python中,我使用了Mechanize库.但是,我似乎无法在.NET中找到类似的东西.我需要的是一个以无头模式运行的浏览器,它能够填写表单,提交表单等.JavaScript解析器不是必须的,但它会非常有用.

.net c# browser automation web-scraping

36
推荐指数
3
解决办法
4万
查看次数

用于在Python中编程GUI的WYSIWYG工具?

我希望找到类似于Borland Delphi或VisualBasic for Python的工具.基本上,我希望能够轻松编写Windows应用程序,而无需对每个小部件进行编码.这样的软件存在吗?谢谢!

python user-interface qt wxpython pyqt4

11
推荐指数
1
解决办法
9217
查看次数

如果只满足某个案例,如何突破循环,然后继续迭代?

我意识到标题可能有点令人困惑,所以我道歉.

基本上,这是我的代码:

while i < 5:
   do stuff
   if i == 3:
      print "i is 3"
      break
Run Code Online (Sandbox Code Playgroud)

现在一切听起来都很简单吧?除了我真的不想从循环中打破,因为我希望它重新开始.所以在这种情况下,期望的结果是迭代1,2,然后当3突破时,然后继续迭代4.如何做到这一点?

python

7
推荐指数
1
解决办法
6308
查看次数

在Python中发送非ASCII POST请求?

我正在尝试向网络应用发送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)

html python unicode post http

7
推荐指数
1
解决办法
5449
查看次数

如果它是JPG图像,QLabel()将不会加载像素图

我试图从一个文件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

我怎么解决这个问题?

python qt pyqt pyside

6
推荐指数
1
解决办法
5164
查看次数

有人可以推荐一个好的PyQt/PySide教程/书/视频系列吗?

...或者是使用PyQT快速GUI开发我需要的一切吗?

我经历了一些在线工作,其中大多数都已经过时了,大部分代码都不起作用,或者它们的编写方式非常糟糕.

python pyqt

5
推荐指数
1
解决办法
3778
查看次数

Python Mechanize:如果两个在网页中具有相同的名称,如何选择下拉列表?

我正在尝试进行机械化解析的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 mechanize

5
推荐指数
1
解决办法
2985
查看次数

PyInstaller打包应用程序在控制台模式下工作正常,在窗口模式下崩溃

我正在使用Python和PySide构建一个相当复杂的应用程序.最后发布的那天即将到来,所以我想将这个应用程序构建为exe.

但是,我的手上有一个奇怪的问题.我过去使用过PyInstaller(顺便使用版本2),从来没有发生过这种情况.

基本上,当我使用--console标志构建应用程序时,它工作正常 - 但它打开控制台窗口.当我使用window flag(-w)构建应用程序时,它不能正常工作.它开始和一切,但有所有这些奇怪的故障.例如,加载文本文件通常会引发BadFileDescriptor错误(在控制台模式下不会发生),并且应用程序在执行某项任务后崩溃.更糟糕的是,任务是循环,并且第一次执行正常,但是当它再次开始工作时,它会崩溃.

当我查看minidump文件时,有一些关于QtGui4.dll文件的内存访问冲突的错误.同样,这在控制台模式下不会发生.

有人有主意吗?

python qt pyqt pyinstaller pyside

5
推荐指数
1
解决办法
4798
查看次数

在PyQt中启动新的QThread()时传递参数

我有一个用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 multithreading pyqt

4
推荐指数
1
解决办法
6222
查看次数