检查给定驱动器上是否存在多个特定文件

时间:2014-03-13 18:27:32

标签: python python-3.x

我正在尝试编写一个Python脚本,该脚本扫描驱动器以检查来自给定列表的任何文件是否存储在驱动器上的某个位置。并且,如果找到它们 - 检索它们的位置。

我的编程技巧是基本的,说得好听。

我已经在这个网站的人的帮助下编写了一个脚本,它可以找到一个文件,但我很难调整它以找到多个文件。

import os 

name = ('NEWS.txt') 
path = "C:\\"
result = [] 
for root, dirs, files in os.walk(path): 
    if name in files: 
        result.append(os.path.join(root, name) + "\n") 

f = open ('testrestult.txt', 'w') 
f.writelines(result)

任何建议将不胜感激!

非常感谢。

1 个答案:

答案 0 :(得分:4)

import os 

names = set(['NEWS.txt', 'HISTORY.txt']) # Make this a set of filenames 
path = "C:\\"
result = []
for root, dirs, files in os.walk(path): 
    found = names.intersection(files) # If any of the files are named any of the names, add it to the result.
    for name in found:
        result.append(os.path.join(root, name) + "\n") 

f = open ('testrestult.txt', 'w') 
f.writelines(result)

相切:

我还会考虑连续写入文件,而不是将所有信息存储在内存中并进行单次写入:

with open('testresult.txt', 'w') as f:
  for root, dirs, files in os.walk(path):
    found = names.intersection(files)
    for name in found:
      f.write(os.path.join(root, name) + '\n')

为什么呢?因为编写操作系统的人比我更了解缓冲。