Python 3.7 - 当一个计数器达到一定值时,第二个计数器加一(两个计数器 运行 同时)
Python 3.7 - When one counter reaches certain value 2nd counter adds one (two counters running same time)
我这里有适合我的代码:
import urllib3
http = urllib3.PoolManager()
location = 'Drive\where-images-go\'
N = 0
for x in range(0, 5000):
urls = ('http://00000.IMAGE_1_'+str(x)+'.jpg')
r = http.request('GET', urls)
Name = str(N+1)
N += 1
with open(location + 'image'+Name+'_image.jpg', 'wb') as img:
img.write(r.data)
此代码将创建一个 url,它将 str(x) 从 0 计数到 5000。但我还想添加另一个计数器,上面的计数器每上升 5000 就会计数 1那五个零在哪里。例如:
import urllib3
http = urllib3.PoolManager()
location = 'Drive\where-images-go\'
N = 0
for x in range(0, 224999):
for every 5000 in x:
othercounter = oc
oc = oc +1
urls = ('http://'+str(oc)+'.IMAGE_1_'+str(x)+'.jpg')
r = http.request('GET', urls)
Name = str(N+1)
N += 1
with open(location + 'image'+Name+'_image.jpg', 'wb') as img:
img.write(r.data)
因此,每次 str(x) 达到 5000 时,oc(othercounter) 将增加 1。由于第二个示例代码的范围是 (0,224999),oc 计数器将为 44,最后一个 url 将是 'http://00044.IMAGE_1_224999.jpg'. The very first image will have been 'http://00000.IMAGE_1_1.jpg'。
如何解决这个问题?
您可以使用 mod %
打印每 5000 个,我已经指出了您应该做的其他事情来实现您的目标:
oc
应该初始化为-1
,因为你要从0
开始
- 我想你想要
oc
保持 5 个宽度,前缀为 0
,比如 00044
,所以你应该在这里使用 rjust
:str(oc).rjust(5, '0')
0
在 range(0, 224999)
中不是必需的
import urllib3
http = urllib3.PoolManager()
location = 'Drive\where-images-go\'
N = 0
oc = -1
for x in range(224999):
N += 1
if x % 5000 == 0:
oc += 1
urls = ('http://' + str(oc).rjust(5, '0') + '.IMAGE_1_' + str(N) + '.jpg')
r = http.request('GET', urls)
with open(location + 'image'+str(N)+'_image.jpg', 'wb') as img:
img.write(r.data)
# test code, need to remove
# the first
if x == 0:
print('first url: {}'.format(urls))
# the last
if x == 224998:
print('last url: {}'.format(urls))
输出
first url: http://00000.IMAGE_1_1.jpg
last url: http://00044.IMAGE_1_224999.jpg
希望对您有所帮助,如有其他问题,请评论。 :)
如果我正确理解了您的需求,您只需要检查当前数字是否可以被您需要的间隔(在本例中为 5000)整除。
另请注意,通过将范围限制设置为 5000,您的第一个计数器只会 运行 最多 4999。
other_counter = 0
for x in range(0, 15_001): # Runs from 0 to 15000 included.
if x % 5000 == 0: # Results in True every time a multiple of 5000 is reached.
other_counter += 1
我这里有适合我的代码:
import urllib3
http = urllib3.PoolManager()
location = 'Drive\where-images-go\'
N = 0
for x in range(0, 5000):
urls = ('http://00000.IMAGE_1_'+str(x)+'.jpg')
r = http.request('GET', urls)
Name = str(N+1)
N += 1
with open(location + 'image'+Name+'_image.jpg', 'wb') as img:
img.write(r.data)
此代码将创建一个 url,它将 str(x) 从 0 计数到 5000。但我还想添加另一个计数器,上面的计数器每上升 5000 就会计数 1那五个零在哪里。例如:
import urllib3
http = urllib3.PoolManager()
location = 'Drive\where-images-go\'
N = 0
for x in range(0, 224999):
for every 5000 in x:
othercounter = oc
oc = oc +1
urls = ('http://'+str(oc)+'.IMAGE_1_'+str(x)+'.jpg')
r = http.request('GET', urls)
Name = str(N+1)
N += 1
with open(location + 'image'+Name+'_image.jpg', 'wb') as img:
img.write(r.data)
因此,每次 str(x) 达到 5000 时,oc(othercounter) 将增加 1。由于第二个示例代码的范围是 (0,224999),oc 计数器将为 44,最后一个 url 将是 'http://00044.IMAGE_1_224999.jpg'. The very first image will have been 'http://00000.IMAGE_1_1.jpg'。
如何解决这个问题?
您可以使用 mod %
打印每 5000 个,我已经指出了您应该做的其他事情来实现您的目标:
oc
应该初始化为-1
,因为你要从0
开始
- 我想你想要
oc
保持 5 个宽度,前缀为0
,比如00044
,所以你应该在这里使用rjust
:str(oc).rjust(5, '0')
0
在range(0, 224999)
中不是必需的
import urllib3
http = urllib3.PoolManager()
location = 'Drive\where-images-go\'
N = 0
oc = -1
for x in range(224999):
N += 1
if x % 5000 == 0:
oc += 1
urls = ('http://' + str(oc).rjust(5, '0') + '.IMAGE_1_' + str(N) + '.jpg')
r = http.request('GET', urls)
with open(location + 'image'+str(N)+'_image.jpg', 'wb') as img:
img.write(r.data)
# test code, need to remove
# the first
if x == 0:
print('first url: {}'.format(urls))
# the last
if x == 224998:
print('last url: {}'.format(urls))
输出
first url: http://00000.IMAGE_1_1.jpg
last url: http://00044.IMAGE_1_224999.jpg
希望对您有所帮助,如有其他问题,请评论。 :)
如果我正确理解了您的需求,您只需要检查当前数字是否可以被您需要的间隔(在本例中为 5000)整除。
另请注意,通过将范围限制设置为 5000,您的第一个计数器只会 运行 最多 4999。
other_counter = 0
for x in range(0, 15_001): # Runs from 0 to 15000 included.
if x % 5000 == 0: # Results in True every time a multiple of 5000 is reached.
other_counter += 1