文件以单一名称重复保存,无循环,无范围
files are saved repeatedly with single name, no looping, no ranging
我的代码运行良好,但有一个缺陷。他们没有相应地储蓄。例如,假设我捕获了 3 个 jpeg 文件,当我 运行 代码时,它在插槽 1 上保存了 3 次,在插槽 2 上保存了 3 次,在插槽 3 上保存了 3 次。所以我最终得到了 3 个相同的文件.
我觉得我的循环逻辑有问题?
如果我将 for n in range(len(soup_imgs)):
更改为 for n in range(len(src)):
,该操作将无限保存最后一个 jpeg 文件。
soup_imgs = soup.find(name='div', attrs={'class':'t_msgfont'}).find_all('img', alt="", src=re.compile(".jpg"))
for i in soup_imgs:
src = i['src']
print(src)
dirPath = "C:\__SPublication__\"
img_folder = dirPath + '/' + soup_title + '/'
if (os.path.exists(img_folder)):
pass
else:
os.mkdir(img_folder)
for n in range(len(src)):
n += 1
img_name = dirPath + '/' + soup_title + '/' + str({}).format(n) + '.jpg'
img_files = open(img_name, 'wb')
img_files.write(requests.get(src).content)
print("Outputs:" + img_name)
我是业余爱好者,不久前才开始作为我的爱好。各位大佬多指教
在编写图像文件时试试这个:
from os import path
for i, img in enumerate(soup_imgs):
src = img['src']
img_name = path.join(dirPath, soup_title, "{}.jpg".format(i))
with open(img_name, 'wb') as f:
f.write(requests.get(src).content)
print("Outputs:{}".format(img_name))
您需要遍历所有图像源,而不是使用前一个 for
块中的最后一个 src
值。
我还添加了一种更安全的方法来连接应该 OS 独立的目录和文件路径。最后,打开文件时,始终使用 with open() as f:
结构 - 这样 Python 会自动为您关闭文件句柄。
我的代码运行良好,但有一个缺陷。他们没有相应地储蓄。例如,假设我捕获了 3 个 jpeg 文件,当我 运行 代码时,它在插槽 1 上保存了 3 次,在插槽 2 上保存了 3 次,在插槽 3 上保存了 3 次。所以我最终得到了 3 个相同的文件.
我觉得我的循环逻辑有问题?
如果我将 for n in range(len(soup_imgs)):
更改为 for n in range(len(src)):
,该操作将无限保存最后一个 jpeg 文件。
soup_imgs = soup.find(name='div', attrs={'class':'t_msgfont'}).find_all('img', alt="", src=re.compile(".jpg"))
for i in soup_imgs:
src = i['src']
print(src)
dirPath = "C:\__SPublication__\"
img_folder = dirPath + '/' + soup_title + '/'
if (os.path.exists(img_folder)):
pass
else:
os.mkdir(img_folder)
for n in range(len(src)):
n += 1
img_name = dirPath + '/' + soup_title + '/' + str({}).format(n) + '.jpg'
img_files = open(img_name, 'wb')
img_files.write(requests.get(src).content)
print("Outputs:" + img_name)
我是业余爱好者,不久前才开始作为我的爱好。各位大佬多指教
在编写图像文件时试试这个:
from os import path
for i, img in enumerate(soup_imgs):
src = img['src']
img_name = path.join(dirPath, soup_title, "{}.jpg".format(i))
with open(img_name, 'wb') as f:
f.write(requests.get(src).content)
print("Outputs:{}".format(img_name))
您需要遍历所有图像源,而不是使用前一个 for
块中的最后一个 src
值。
我还添加了一种更安全的方法来连接应该 OS 独立的目录和文件路径。最后,打开文件时,始终使用 with open() as f:
结构 - 这样 Python 会自动为您关闭文件句柄。