我有下面的代码,它将执行以下操作
动机是一旦一个文件被识别(满足一个前缀),我想要那个文件的绝对realpath。我试着使用Path(libfile).resolve()选项,但它只给出当前的工作目录,脚本是从那里运行的,而不是该文件的realpath。你能解释一下我错在哪里吗?你知道吗
import os
from pathlib import Path
def directory(dirName, prefix):
process_dir = [name for name in os.listdir(dirName) if os.path.isdir(os.path.join(dirName, name))]
for entry in process_dir:
for dirname, directory, files in os.walk(os.path.join(dirName, entry)):
for libfile in files:
if libfile.startswith((prefix)):
return(Path(libfile).resolve())
Python版本3.6.2。你知道吗
几个问题:
1)您只返回一个文件
2)调用
.resolve
时只使用一个文件名,因此解析路径的位置取决于当前的工作目录。你知道吗3)您的规范声明您只希望在目录树中下降一级,但不修剪
os.walk
正在采用的下降路径。你知道吗我建议抛弃
os.walk
,充分利用Path
。你知道吗您声明只需要一个级别以下的文件;这意味着您需要使用
Path
遍历该级别:还可以构造一个glob模式来进一步简化它。这可能很简单:
或者
找到一个目录下的文件与前缀你寻找。你知道吗
更改此行:
对此:
我同意the comment from dawg,在这里使用递归glob模式将是一个更好的选择。你知道吗
相关问题 更多 >
编程相关推荐