|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我在CSDN下载了一个批量下载器,用python写的,但是不知道如何操作,求助
代码贴上
import sys
import xlrd
import requests
import threading
import os
def ver():
print("BatchDownloader v1.0")
print(" 它是一个Python写的小工具,可以通过HTTP协议批量下载文件,并重新命名。")
print(" 参数说明:<任务文件>,[下载文件存储目录],[线程数],[开始记录],[结束记录])")
print(" 任务文件:必填参数,使用Excel文件,在第一个sheet中需要包含两列,第一列为下载文件后存储的名称,第二列为下载文件的URL地址。")
print(" 下载文件存储目录:可选参数,默认值是程序运行的当前目录。")
print(" 线程数:可选参数,可以设置用几个线程下载数据文件,默认值是5。")
print(" 开始记录:可选参数,可以设置从第几条数据开始下载。默认值是0。")
print(" 结束记录:可选参数,可以设置到第几条数据停止下载。默认值是总文件的总记录数。")
def down(path,filename,url):
if len(url)>0:
file_extension=os.path.splitext(url)[1] ;
if os.path.exists(path + filename + file_extension):
print(filename + " 已经下载.")
else:
try:
print(filename + " 下载中...")
r = requests.get(url)
with open(path + filename + file_extension, "wb") as code:
code.write(r.content)
print(filename + " 下载成功.")
except:
print(filename + " 下载失败.")
if len(sys.argv)<2:
ver()
else:
filename = sys.argv[1]
if os.path.exists(filename):
book = xlrd.open_workbook(filename)
sheet0 = book.sheet_by_index(0)
nrows = sheet0.nrows # 获取行总数
if len(sys.argv) > 2:
path = sys.argv[2]
else:
path = "./"
if len(sys.argv) > 3:
threadNum = int(sys.argv[3])
else:
threadNum = 5
if len(sys.argv) > 4:
startID = int(sys.argv[4])
else:
startID = 0
if len(sys.argv) > 4:
endID = int(sys.argv[5])
else:
endID = nrows-1
print("任务Excel文件:"+filename)
print("下载文件存储目录:" + path)
print("线程数:" + str(threadNum))
print("开始记录:" + str(startID))
print("结束记录:" + str(endID))
book = xlrd.open_workbook(filename)
sheet0 = book.sheet_by_index(0)
nrows = sheet0.nrows # 获取行总数
print("总记录数:" + str(nrows) + "条")
print("开始下载文件...")
for x in range(startID,endID,threadNum):
threads = []
for i in range(0,threadNum):
#print(x+i, end='')
#print(",", end='')
if x+i<=endID:
filename = sheet0.cell_value(x+i, 0)
url = sheet0.cell_value(x+i, 1)
threads.append(threading.Thread(target=down, args=(path, filename, url)))
for t in threads:
t.setDaemon(True)
t.start()
for t in threads:
t.join();
print("全部下载完成.")
else:
ver() |
|