首页 > 试题广场 >

6[问答] 编写程序,用户输入一个目录和一个文件名,搜索该目

[问答题]
编写程序,用户输入一个目录和一个文件名,搜索该目录及其子目录中是否存在该文件。

   import sys
   import os
   def isExist():
       directory = sys.argv[1]
       filename = sys.argv[2]
       paths = os.walk(directory)
       for (root,dirs,files) in paths:
           if filename in files:
               return "Yes"
              break
 
  a = isExist()
  if a == "Yes":
      print(a)
  else:
      print("No")

编辑于 2019-03-22 14:44:10 回复(0)
两种解决思路,一种是递归遍历(可能考虑到性能问题),一种是通过os.walk返回生成器,生成器包含了目录的文件树,要考虑的问题:可能存在多个匹配文件,查找目录路径无效的问题
#!/usr/bin/python3

import os

def find_file(dir_path, file_name):
    if os.path.exists(dir_path):
        file_tree = os.walk(dir_path) # 返回一个生成器,可以获取到文件树
    else:
        print("查找目录地址不存在")
        return

    ret_path = []
    for path, catlog, files in file_tree:

        if file_name in files:
            ret_path.append(path+file_name)
            print("%s/%s" % (path, file_name))


    if ret_path:
        print(ret_path)
    else:
        print("在 %s 目录下没有找到指定文件" % dir_path)

if __name__ == "__main__":
    find_file('/root', 'file_lookup.py')


发表于 2020-06-06 00:22:15 回复(0)
import os

"D:\developer\qiubai.txt"
def test():
    # 用户传入的路径和文件名
    file_path = "D:\developer\qiuai.txt"
    # file_path = "D:\developer\python_spider\qiubai\qiubai.txt"
    # 取文件名
    file_name = file_path.split("\\")[-1]
    # 取路径
    file_list = file_path.split("\\")[:-1]
    file_path = "\\".join(file_list)
    # 判断是否存在文件
    for root,dirs,files in os.walk(file_path):
        if file_name in files:
            print(root)
            print("YES")
            break
    else:
        print("NO")

if __name__ == '__main__':
    test()

发表于 2019-08-08 14:33:57 回复(0)
import sys
import os
directory=sys.argv[1]
filename=sys.argv[2]
paths=os.walk(directory)
for root,dirs,files in paths:
    if filename in files:
        print('Yes')
        break
else:
    print("No")
发表于 2019-07-16 12:48:44 回复(0)
import os 
def serach(path, a)
    #首先查找该目录下的所有文件
    for file in os.listdir(path)
            this_path = os.path.join(path, file)
            if os.path.isfile(this_path):
                if a in file:
                        print(this_path)
                else:
                    serach(this_path,a)
if __name=="__mian__":
    search(os.path.abspath("."),"mo")

    
发表于 2019-07-04 01:40:16 回复(0)
都没有查子目录
发表于 2019-06-29 09:52:47 回复(0)
os.path.exists
发表于 2019-02-26 15:43:41 回复(0)