我有一个使用dirs = os.listdir(dir/path)
创建的文件名列表。
我也是从csv文件导出数据集。 stocks = csv.reader(open('config.csv', 'rb'))
样本库存数据:
FILENAME1,URL1
文件名2,URL2
我需要做的是在python脚本中获取dirs
列表中每个文件的每个url。提前谢谢。
答案 0 :(得分:6)
Pytho为此提供了一个内置函数zip
:
for dir, stock, in zip(dirs, stocks)
演示:
>>> a = ["cat", "dogs"]
>>> b = ["http://cat-service.com", "http://dogs-care.com"]
>>> for animal, site in zip(a, b):
print(animal, site)
cat http://cat-service.com
dogs http://dogs-care.com
看,这不难,对吗? Python让我们的生活更轻松! :)
备选方案:如果效果真的很重要,请使用itertools.izip
。
更新
原来上面的答案不是OP所要求的。好吧,和史蒂夫一样,我会用这个字典:
stock_dict = dict(stock)
urls = [stock_dict.get(file, "Not found") for file in dirs]
演示:
我们假设目录中有3个文件,其中列出了两个。
>>> stock = [("fileName1","url1"), ("fileName2","url2")]
>>> stock_dict = dict(stock)
>>> dirs = ["fileName1", "fileName2", "fileName3"]
>>> urls = [stock_dict.get(file, "Not found") for file in dirs]
>>> urls
['url1', 'url2', 'Not found']
希望这有帮助!
答案 1 :(得分:2)
假设一切都适合记忆:
stockslookup = dict(stocks)
urls = [stockslookup[filename] for filename in dirs]
请注意,文件名必须是完全相同的字符串,因此您可能希望在两者(或os.path.abspath
)上使用os.path.normpath
。