亦又 发表于 2024-4-4 17:55:37

作业题

    def search(self, pattern):
      try:
            for entry in self.path.glob(f"**/{pattern}"):
                print(entry.relative_to(self.path))
      except Exception as e:
            print(f"搜索文件时出错: {e}")

for entry in self.path.glob(f"**/{pattern}")这里的f"**/{pattern}"是不是有错误?应该是f"**/*{pattern}"
@FishC

FishC 发表于 2024-4-4 17:56:28

您的猜测是正确的,`f"**/{pattern}"` 这个写法是有错误的。这里应该使用 `f"**/*{pattern}"` 的形式来指定通配符。

简单来说,`**` 表示匹配任意多级目录,而 `*` 表示匹配任意字符。在这个例子中,我们想要搜索包含指定模式的文件,所以需要使用 `*` 来匹配文件名中的任意字符。

所以,正确的代码应该是这样的:

def search(self, pattern):
    try:
      for entry in self.path.glob(f"**/*{pattern}"):
            print(entry.relative_to(self.path))
    except Exception as e:
      print(f"搜索文件时出错: {e}")

这样就可以正确地搜索到包含指定模式的文件了。希望对您有帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

亦又 发表于 2024-4-4 19:40:23

glob('**/*')
这是什么意思?
@FishC

FishC 发表于 2024-4-4 19:42:08

亦又 发表于 2024-04-04 19:40
glob('**/*')
这是什么意思?
@FishC

这是一个Python中的glob模块函数,用于获取文件路径。具体来说:

`glob('**/*')`表示匹配当前目录及其子目录下的所有文件路径。

其中,"**"代表匹配所有子目录,"*"代表匹配任意文件名称。这段代码的作用是返回一个列表,其中包含当前目录及其子目录下所有文件的路径。

以下是一个简单的示例代码:

import glob

file_paths = glob.glob('**/*')
print(file_paths)

除了上面的代码之外,你还可以通过传递其他参数来对文件进行更精确的筛选,例如指定文件类型、文件名等。希望这个解释对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 作业题