使用Python下载.Jar文件

时间:2013-09-16 19:38:47

标签: python jar download urllib2

我正在尝试使用Python以及sys和urllib2模块从Internet下载文件。该程序背后的一般想法是让用户输入他们想要下载的文件的版本,例如1_4。然后,程序将用户输入和“/whateverfile.jar”添加到URL并下载文件。当程序插入“/whateverfile.jar”而不是插入到同一行时程序将“/whateverfile.jar”插入到新行上时,我的问题出现了。这导致程序无法正确下载.jar。

任何人都可以帮我吗?代码和输出如下。

代码:

import sys
import urllib2

print('Type version of file you wish to download.')
print('To download 1.4 for instance type "1_4" using underscores in place of the            periods.')
W = ('http://assets.file.net/')
X = sys.stdin.readline()
Y = ('/file.jar')
Z = X+Y
V = W+X
U = V+Y
T = U.lstrip()
print(T)

def JarDownload():
  url = "T"

  file_name = url.split('/')[-1]
  u = urllib2.urlopen(url)
  f = open(file_name, 'wb')
  meta = u.info()
  file_size = int(meta.getheaders("Content-Length")[0])
  print "Downloading: %s Bytes: %s" % (file_name, file_size)

  file_size_dl = 0
  block_sz = 8192
  while True:
      buffer = u.read(block_sz)
      if not buffer:
          break

      file_size_dl += len(buffer)
      f.write(buffer)
      status = r"%10d  [%3.2f%%]" % (file_size_dl, file_size_dl * 100. / file_size)
      status = status + chr(8)*(len(status)+1)
      print status,

  f.close()

输出:

Type version of file you wish to download.
To download 1.4 for instance type "1_4" using underscores in place of the periods.
1_4
http://assets.file.net/1_4
/file.jar

我目前根本没有调用JarDownload()函数,直到URL在打印到屏幕时显示为单行

1 个答案:

答案 0 :(得分:1)

当您键入输入并单击Return时,sys.stdin.readline()调用会将新行符号附加到字符串并返回它。要获得所需效果,应在使用前从输入中删除新行。这应该有效:

X = sys.stdin.readline().rstrip()

作为旁注,您应该为变量赋予更有意义的名称。像X,Y,Z等名称对变量内容一无所知,甚至简单的操作,如你的连接,不必要地难以理解。