Discuss / Python / 交第二题作业

交第二题作业

Topic source

风雪扑面

#1 Created at ... [Delete] [Delete and Lock User]

思考半天,写不出相对路径来,用os.path.split()又只能拿到最后一个目录,请大神指点。 在测试的时候发现存在中英文混合的兼容问题:如果仅目录名含中英文,其目录下的文件是英文命名能正常运行; 如果目录名和文件名都有中英文混合情况,函数执行完不报错,但是返回空结果。另外,搜索大目录递归容易溢出。

import os
filename = input("请输入文件名,支持模糊搜索: ")
path = os.path.abspath(input("请输入搜索目录: "))
def searchFile(filename, path):
    for x in os.listdir(path):
        if os.path.isfile(x) and filename in x:
            print('finded: %s in %s' % (x, os.path.abspath(path)))
        if os.path.isdir(x):
            searchFile(filename, os.path.join(path, x))
searchFile(filename, path)

Orenoid

#2 Created at ... [Delete] [Delete and Lock User]

取一开始搜索目录的长度,用切片从目标文件的绝对目录里去掉前面那部分就行了

Ha_yet

#3 Created at ... [Delete] [Delete and Lock User]

L = len(path) print(x, path[L:])

不过你的文件判断有问题,os.path.isfile(path) 和os.path.isdir(path)里的变量path是路径,而不是文件名字,所以应该是os.path.isfile(os.path.join(path, x))


  • 1

Reply