我有一个文件名列表,是用dirs = os.listdir(dir/path)
创建的。
同时,我从csv文件中导出了数据集。stocks = csv.reader(open('config.csv', 'rb'))
股票数据示例:
fileName1,url1
fileName2,url2
我需要在Python脚本中获取dirs
列表中每个文件的url。谢谢提前。
我有一个文件名列表,是用dirs = os.listdir(dir/path)
创建的。
同时,我从csv文件中导出了数据集。stocks = csv.reader(open('config.csv', 'rb'))
股票数据示例:
fileName1,url1
fileName2,url2
我需要在Python脚本中获取dirs
列表中每个文件的url。谢谢提前。
Python提供了一个内置函数来实现这个功能,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想要的。好吧,和Steve一样,我会用字典来解决这个问题:
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']
假设所有内容都适合内存:
stockslookup = dict(stocks)
urls = [stockslookup[filename] for filename in dirs]
os.path.abspath
(或os.path.normpath
)。dict
是查找任何东西的“显而易见”的方法 :-) - Steve Jessopconfig.csv
文件的内容,并且请求是查找文件中的每个文件名以获取其对应的URL。但是,如果我错了,那么我的代码就是错误的 :-) - Steve Jessop