我有一个目录中的文件列表。我必须只处理该目录中的某些文件。 filelist 是我想要的文件列表。我该如何实现这一目标?对 bash 解决方案不感兴趣,因为我必须在这个 Python 脚本中完成所有工作。非常感谢!
for record in result:
filelist.append(record[0])
print filelist
for file in os.listdir(sys.argv[1].strip() + "/"):
for file in filelist: #This doesn't work, how else do I do this? If file equals to my desired file-list, then do something.
print file
抱歉,我不知道我是怎么错过的!我猜是清晨编码!模组们,请关闭它,除非有人想以一种有效的方式参与其中。
for file in os.listdir(sys.argv[1].strip() + "/"):
if file in filelist:
print file
请您参考如下方法:
如果顺序和唯一性无关紧要,您可以使用 set 交集,这会更有效率。
import set
os_list = os.listdir(sys.argv[1].strip() + "/")
for file in set(os_list) & set(filelist):
#...
改进示例:
import random
import timeit
l = [random.randint(1,10000) for i in range(1000)]
l2 = [random.randint(1,10000) for i in range(1000)]
def f1():
l3 = []
for i in l:
if i in l2:
l3.append(i)
return l3
def f2():
l3 = []
for i in set(l) & set(l2):
l3.append(i)
return l3
t1 = timeit.Timer('f1()', 'from __main__ import f1')
print t1.timeit(100) #2.0850549985
t2 = timeit.Timer('f2()', 'from __main__ import f2')
print t2.timeit(100) #0.0162533142857
