在unix中查找文件的真实路径

Finding the realpath of a file in unix

我有以下代码,预计会执行以下操作,

Python 版本 3.6.2.

更改此行:

return(Path(libfile).resolve())

为此:

return (Path(dirname) / libfile).resolve()

我同意 在这里使用递归 glob 模式是更好的选择。

几个问题:

1) 您只返回一个文件

2) 您调用 .resolve 时只有一个文件名,因此解析路径的位置取决于当前的工作目录。

3) 您的规范声明您只想在目录树中下降一级,但您没有修剪 os.walk 正在采用的下降路径。

我建议放弃 os.walk 并充分使用 Path

您说只需要下一层的文件;这意味着你需要用 Path:

走那个水平
file_names=[]
for d in (p for p in Path(dirName).glob('*') if p.is_dir()):
    ab_path=d.resolve()
    file_names+=[fn for fn in Path(ab_path).iterdir() if fn.is_file() and fn.name.startswith(prefix)]

return file_names

也可以构建一个 glob 模式来进一步简化它。它可能很简单:

Path(dirName).glob('*/prefix*')

或者,

[p.resolve() for p in Path(dirName).glob('*/prefix*') if p.is_file()]

以您查找的前缀在下一级目录中查找文件。