python\uu init\uu错误仅在Windows上

2024-04-29 00:54:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python很陌生。。。在

 import sys, os, time, py4chan, urllib from urllib2 import urlopen, URLError, HTTPError

 def refreshthread(boardin,no):
     global thread
     global topic
     board = py4chan.Board(boardin)
     thread = board.getThread(int(no))
     topic = thread.topic
     time.sleep(2.5)

 def dlfile(url, folder):

     try:
         f = urlopen(url)

         with open(folder + "/" + os.path.basename(url), "wb") as local_file:
             local_file.write(f.read())
             print "Downloaded to " + str(folder + "/" + os.path.basename(url)) 

     except HTTPError, e:
         print "HTTP Error:", e.code, url
     except URLError, e:
         print "URL Error:", e.reason, url

 def getsize(uri):
     file = urllib.urlopen(uri)
     size = file.headers.get("content-length")
     file.close()
     return str(int(size) / 1024)

 def main():
     boardtag = str(raw_input("Board: "))
     threadno = int(raw_input("Thread id: "))
     folder = str(raw_input("Save to folder: "))
     print "Getting thread information..."
     refreshthread(boardtag,threadno)
     print "Subject: " + topic.Subject
     while(True):
         if not os.path.exists(folder): os.makedirs(folder)
         refreshthread(boardtag,threadno)
         for imgurl in thread.Files():
             if imgurl is not None and not os.path.exists(folder + "/" + os.path.basename(imgurl)):
                 print "A wild image appears! " + "(" + getsize(imgurl) + "kb)" 
                 dlfile(imgurl,folder)
             else:
                 pass

 if __name__ == '__main__':
     main()

我在linux上编写了这个代码,它运行得很好,但是如果我在windows上运行,就会出现以下错误:

^{pr2}$

这很奇怪,因为我还没有定义init。 这可能是来自另一个模块的init?在

如果我编写其他脚本,py4chan模块似乎可以正常工作。 两台机器的python版本也相同。在

编辑(完全错误):

Getting thread information...
Traceback (most recent call last):
  File "4chan.py", line 59, in <module>
    main()
  File "4chan.py", line 46, in main
    refreshthread(boardtag,threadno)
  File "4chan.py", line 15, in refreshthread
    board = py4chan.Board(boardin)
TypeError: __init__() takes exactly 4 arguments (2 given)

*编辑:*好吧,我有两个同名的不同模块。现在都在工作。 我不应该被允许进入这个网站。在


Tags: pathurltopicosmaindeffolderthread
3条回答

py4chan.Board类需要用3个参数构造,而不是1个。refreshthread函数中的以下行:

board = py4chan.Board(boardin)

应该看起来像这样:

^{pr2}$

我刚刚从http://py4chan.sourceforge.net/抓取的py4chan模块对Board.__init__有这样的定义:

class Board:
    def __init__(self, base_url, post_url, filesize):

这需要4个参数(包括隐式self),因此您缺少post_url和{}参数(无论它们是什么)。在

乍一看,您似乎在两个地方硬编码了/作为目录分隔符。在Windows中,目录分隔符是\。在

相关问题 更多 >