小白的白请教一个问题,如何这样生成一个列表

2016-09-06 11:48:48 +08:00
 cffcaa
是我想用笨方法下载一些资源,链接是类似这样的  xx.xx.xx/变量 A/变量 B.txt (称做变量是否正确)

xx.xx.xx/123/652   xx.xx.xx/123/653   xx.xx.xx/123/654   xx.xx.xx/123/655   xx.xx.xx/123/656
然后是  xx.xx.xx/124/786   xx.xx.xx/124/787   xx.xx.xx/124/788   xx.xx.xx/124/789   xx.xx.xx/124/790

想了半天 也想不到啥好办法,如何能自动生成这样的列表,因为有两个变量,第变量 A 每增加 1 ,变量 B 则是五个中的一个
如何能方便的按两个变量规则生成一个下载列表呢?
请各位大师帮助! 感谢
1863 次点击
所在节点    问与答
20 条回复
v9ox
2016-09-06 11:52:56 +08:00
两个 for 循环
cffcaa
2016-09-06 11:58:29 +08:00
@v9ox
可以给出详细步骤吗?纯小白一只
我先搜一下
BBrother
2016-09-06 12:08:58 +08:00
```
for a in [123, 124, 125]:
for b in [456, 457, 458]:
print "xxx.xxx.xxx/" + str(a) + "/" + str(b)
```
BBrother
2016-09-06 12:10:45 +08:00
@BBrother 哎呀,回复不能用 markdown 吗?
cffcaa
2016-09-06 12:13:52 +08:00
@BBrother 请问这是那种语言的格式,我好下载安装
有 win 下的批处理吗?
BBrother
2016-09-06 12:20:49 +08:00
@cffcaa python ,批处理不会啊
cffcaa
2016-09-06 12:37:35 +08:00
@BBrother  谢谢,试验成功,
不过这有上百条需要生成,有没有更便捷的方法?
我是不是要求太份了!
我再摸索摸索
zhanglintc
2016-09-06 12:50:43 +08:00
批处理的:

@echo off

set outer=123
:outerloop
set inner=652
:innerloop
echo xx.xx.xx/%outer%/%inner%
set /a inner = %inner% + 1
if not %inner% == 791 goto innerloop
set /a outer = %outer% + 1
if not %outer% == 125 goto outerloop

echo.
echo Press any key to close...
pause>nul

不确定批处理里面的 for 能不能成功. 就想到了用两次 goto 来实现...
还有就是注意一下最后那个边界, 要输出 790 就要设置到 791, 输出 124 就要设置到 125...
cffcaa
2016-09-06 13:11:50 +08:00
感谢几位的回复,
刚才我有表达错误,变量 A 增加 1 ,变量 B 也会增加,我大概估算了下,量太大了,算了
再次感谢 zhanglintc,BBrother,以及 v9ox 的帮助,
感谢!
xucuncicero
2016-09-06 13:15:01 +08:00
都这么高大上啊,楼主用 Excel 吗?
A 列生成 A :=INT((ROW()-1)/5)+123
B 列生成 B :不知道有什么规律,这个 652 和 786 是根据什么来的
然后 C 列:="xx.xx.xx/"&A1&"/"&B1&".txt"
要多少条就下拉多少行
BBrother
2016-09-06 13:15:21 +08:00
@cffcaa 你可以看看 python 的 itertools 模块的 product 方法,应该比两个 for 快。但是几百条的话,两个 for 也是一瞬间的事。
zhanglintc
2016-09-06 13:31:47 +08:00
@xucuncicero 其实我也觉得 Excel 最简单, 拉一下就行了... 就是不清楚具体需求. 哈哈
cffcaa
2016-09-06 14:52:32 +08:00
@xucuncicero

@zhanglintc
有 wps , B 列输那个公式?

假如变量 A 是 12345 ,那么变量 B 在 66675-66680 之间,下一条就是变量 A 是 12346 ,变量 B 就在 66676-66681 之间
,变量 A 不是连续的,变量 B 是一个规律
有几百条链接,
imn1
2016-09-06 15:38:32 +08:00
大部分下载器都能这样生成链接的
cffcaa
2016-09-06 15:41:05 +08:00
@imn1
不能吧,因为有两处变量,!我没发现有啊,
给个提示?
xucuncicero
2016-09-06 16:00:39 +08:00
@cffcaa 公式没法写,问题是你这个需求描述还是太模糊了。如果 A 不连续,是不是就是没规律?那就没办法整; B 这个规律你自己估计是明白,不过旁人看不明白, B 跟 A 有关系吗还是相互独立的,或者就是以 66675 、 66676 、 66677 这样的顺序依次生成五个数?你的描述尽量数学化吧,没有歧义,人家好懂。。。

另外,你是要下载的话,难道没个目录什么的吗,不能直接把所有链接都扒下来吗?
cffcaa
2016-09-06 16:17:40 +08:00
@xucuncicero
以上没说清楚,这回看怎么样,
链接 1 , xx.xx.xx/12345(变量 A)/66605-66610 (变量 B ,在五个之间有一个是正确的)
链接 2 , xx.xx.xx/12346/66606-66611(如果链接 1 的变量 B 是 66610,此处变量 B 在 66610-66615 之间有一个是正确的,如果链接 1 的变量 B 是 66608 ,此处变量 B 就在 66608-66612 之间有一个是正确的)

你就按照 A 是 12345 , B 就生成  66605-66610  
再往下, A 是 12346 , B 就生成  66606-66611
这样给我写怎么样,不要管不连续的问题,按连续写如何?
设定 A 的范围 12345-12445 之间, B 按以上规律类推行不?

没有目录,不方便外传,所以我才想到这个笨办法,一些下载工具如迅雷啊,只能控制一处变量,实现不了
imn1
2016-09-06 16:35:09 +08:00
@xucuncicero
至少 firefox/downthemall 扩展可以
IDM/FDM 那些应该也可以吧?不会这么弱这个小功能都没有吧,没有的话就是我抬举他们了
xucuncicero
2016-09-06 16:52:02 +08:00
@cffcaa
A1 :=INT((ROW()-1)/6)+12345
B1 :=66605+ROUNDUP(ROW()/6,0)+MOD(ROW(A6),6)-1
cffcaa
2016-09-06 17:05:53 +08:00
@imn1
谢谢回复, IDM ,迅雷,快车都是只能控制一个变量, firefox 扩展不适用我这种情况,

@xucuncicero
感谢给出公式,我试验试验,感谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/304262

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX