Python 2.7 避免使用urllib替换文件,而是使用类似于_1,_2的名称

Python 2.7 避免使用urllib替换文件,而是使用类似于_1,_2的名称,python-2.7,urllib,Python 2.7,Urllib,我有一个csv文件,包含图像URL和两列给定的文件名。在文件中,有些文件名是重复的,但它们各自的链接是唯一的。我想保存所有的图像。所以如果 给定的filename.jpg图像存在,我希望下一个图像保存为filename_2、filename_3 我使用一个简单的urllib.urlretrieve行来获取导入的图像: import csv import os import re import urllib 首先,存储您的csv数据 file_names = [] urls = [] with

我有一个csv文件,包含图像URL和两列给定的文件名。在文件中,有些文件名是重复的,但它们各自的链接是唯一的。我想保存所有的图像。所以如果 给定的filename.jpg图像存在,我希望下一个图像保存为filename_2、filename_3

我使用一个简单的urllib.urlretrieve行来获取导入的图像:

import csv
import os
import re
import urllib
首先,存储您的csv数据

file_names = []
urls = []

with open('data.csv', 'r') as file:
    reader = csv.reader(file)
    for file_name, url in reader:
        file_names.append(file_name)
        urls.append(url)

    file.close()
创建一个新列表以存储新文件名

new_file_names = []
反复浏览
文件名
列表

for file_name in file_names:
    for temp_file_name in new_file_names:
        if temp_file_name == file_name:
    new_file_names.append(file_name)
抓取文件扩展名。有许多图像扩展名:.jpg.png

这是假设文件扩展名只有4个字符长,包括
,只要在整个文档中看到
[-4:]
,就要小心。如果存在问题,请使用regex获取文件扩展名

接下来,遍历
新文件名
列表,查看是否从
文件名
列表中获取与
文件名
匹配的内容

for file_name in file_names:
    for temp_file_name in new_file_names:
        if temp_file_name == file_name:
    new_file_names.append(file_name)
当我们得到一个匹配项时,首先检查它是否已经有一个
'\ub+
+
文件\u ext
。这意味着
>+
任何数字
+
文件

            check = re.search('_\d+' + file_ext, temp_file_name)
                inverse = re.search('.*_(?=\d+' + file_ext + ')', file_name)
                file_name = inverse.group(0) + str(number) + file_ext
如果检查为
True
,我们现在希望查看该数字并添加一个

            if check:
                number = int(check.group(0)[1:-4]) + 1
现在,我们希望像以前一样执行相反的正则表达式,因此我们只获得文件名+
\uu
,但不包含所有数字。然后添加新号码和
文件_ext

            check = re.search('_\d+' + file_ext, temp_file_name)
                inverse = re.search('.*_(?=\d+' + file_ext + ')', file_name)
                file_name = inverse.group(0) + str(number) + file_ext
else
用于首次出现匹配时,将
\u 1
添加到
文件名的末尾

            else:
                file_name = file_name[:-4] + '_1' + file_ext
文件名
附加到
新文件名
列表中

for file_name in file_names:
    for temp_file_name in new_file_names:
        if temp_file_name == file_name:
    new_file_names.append(file_name)
设置用于存储图像的文件夹(如果需要)。如果该文件夹不存在,它将为您创建一个

path = 'img/'

try:
    os.makedirs(path)
except OSError:
    if not os.path.isdir(path):
        raise
最后,为了保存图像,我们使用
for
循环并压缩
新文件名和
URL
。在循环中,我们使用
urllib.urlretrieve
下载图像

for file_name, url in zip(new_file_names, urls):
    urllib.urlretrieve(url, path + file_name)
进口:

import csv
import os
import re
import urllib
首先,存储您的csv数据

file_names = []
urls = []

with open('data.csv', 'r') as file:
    reader = csv.reader(file)
    for file_name, url in reader:
        file_names.append(file_name)
        urls.append(url)

    file.close()
创建一个新列表以存储新文件名

new_file_names = []
反复浏览
文件名
列表

for file_name in file_names:
    for temp_file_name in new_file_names:
        if temp_file_name == file_name:
    new_file_names.append(file_name)
抓取文件扩展名。有许多图像扩展名:.jpg.png

这是假设文件扩展名只有4个字符长,包括
,只要在整个文档中看到
[-4:]
,就要小心。如果存在问题,请使用regex获取文件扩展名

接下来,遍历
新文件名
列表,查看是否从
文件名
列表中获取与
文件名
匹配的内容

for file_name in file_names:
    for temp_file_name in new_file_names:
        if temp_file_name == file_name:
    new_file_names.append(file_name)
当我们得到一个匹配项时,首先检查它是否已经有一个
'\ub+
+
文件\u ext
。这意味着
>+
任何数字
+
文件

            check = re.search('_\d+' + file_ext, temp_file_name)
                inverse = re.search('.*_(?=\d+' + file_ext + ')', file_name)
                file_name = inverse.group(0) + str(number) + file_ext
如果检查为
True
,我们现在希望查看该数字并添加一个

            if check:
                number = int(check.group(0)[1:-4]) + 1
现在,我们希望像以前一样执行相反的正则表达式,因此我们只获得文件名+
\uu
,但不包含所有数字。然后添加新号码和
文件_ext

            check = re.search('_\d+' + file_ext, temp_file_name)
                inverse = re.search('.*_(?=\d+' + file_ext + ')', file_name)
                file_name = inverse.group(0) + str(number) + file_ext
else
用于首次出现匹配时,将
\u 1
添加到
文件名的末尾

            else:
                file_name = file_name[:-4] + '_1' + file_ext
文件名
附加到
新文件名
列表中

for file_name in file_names:
    for temp_file_name in new_file_names:
        if temp_file_name == file_name:
    new_file_names.append(file_name)
设置用于存储图像的文件夹(如果需要)。如果该文件夹不存在,它将为您创建一个

path = 'img/'

try:
    os.makedirs(path)
except OSError:
    if not os.path.isdir(path):
        raise
最后,为了保存图像,我们使用
for
循环并压缩
新文件名和
URL
。在循环中,我们使用
urllib.urlretrieve
下载图像

for file_name, url in zip(new_file_names, urls):
    urllib.urlretrieve(url, path + file_name)

使用
os.path.isfile
检查文件是否存在。如果存在,请更改新文件的名称。使用
os.path.isfile
检查文件是否存在。如果是,请更改新文件的名称。