【问题标题】:Saving Files from a Loop Without Overwrite从循环中保存文件而不覆盖
【发布时间】:2015-06-05 10:55:57
【问题描述】:

目前我的 python 脚本(使用“Spynner”)有一个循环,其中包含:

browser.load(url)
time.sleep(5)
browser.snapshot().save('example.png')

...但问题在于,每次循环循环时,它都会用新呈现的 URL 的图像覆盖先前存储的图像(每次运行循环时 URL 都会更改),而不是制作一个新图像,与上一个。我创建了一个计数,但出于某种原因:

browser.snapshot().save((count)'.png')

似乎不起作用。如何将定义的计数用作带有 .save 的文件名的一部分?

谢谢

【问题讨论】:

  • browser.snapshot().save(str(count) + '.png') ?
  • 你试过str(count) + '.png'吗?

标签: python spynner


【解决方案1】:
browser.snapshot().save('{:03d}.png'.format(count))

应该这样做。如果需要,您可以将格式运算符 (:03d) 更改为更大的数字。

这将为您提供格式为000.png001.png 等的文件。仅使用str(count)+'.png' 不会在前面填充零,从而使以后的文件处理更加困难

【讨论】:

  • 谢谢!如果我需要支持多达 10,000 个文件名(而不是多达 999 个,数百个),我会使用“{:0005d}”而不是“{:03d}”吗?我假设零的数量和“[number]d”与所需的位数有关?
  • 不,只有{:05d} 会这样做。 0 表示“填充零”,5d 表示 5 位整数
  • 谢谢!我几乎拥有它哈哈 :) 非常感谢。
【解决方案2】:

试试这个

for counter,url in enumerate(urls):
    browser.load(url)
    time.sleep(5)
    browser.snapshot().save(str(counter) + '.png')

或者只是设置 counter = 0,然后运行循环,每次保存后递增计数器,如下所示:-

counter = 0
for url in urls:
    browser.load(url)
    time.sleep(5)
    browser.snapshot().save(str(counter) + '.png')
    counter += 1

【讨论】:

  • 感谢您的评论,这是我有空时会探索的另一种选择
猜你喜欢
  • 2018-02-18
  • 2019-10-10
  • 2018-08-22
  • 2019-02-28
  • 1970-01-01
  • 2019-09-20
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
相关资源
最近更新 更多