检查所需文件是否在文件路径中

Check if needed files are in filepaths

我正在为我的云应用程序寻找解决方法,如果 git lfs 不受支持,它会下载所需的文件。

但是,我需要检查根文件夹中的 wandering-sponge-4.pthlabel_embeddings.npydistilbert-dlf/pytorch_model.bin

下的 pytorch_model.bin

我用Path检查了所有目录并将它们保存为数组中的字符串,这样我以后就可以检查上面的文件了。

我想出了下面的代码,returns 我是对的,如果所有文件都可用的话。

它总是打印错误,尽管每个文件都已就位。我错过了什么?

(我需要检查我的字符串数组中描述的三个名字)

 # ugly workaround because streamlit cloud doesn't support git lfs -.-
for model in Path().cwd().glob("./*"):
    foundFiles.append(str(model))
for files in Path().cwd().glob("distilbert-dlf/*"):
    foundFiles.append(str(files))

checkFiles = ["pytorch_model.bin", "wandering-sponge-4.pth", "label_embeddings.npy"]

output = any([substring in checkFiles for substring in foundFiles])
print(output, foundFiles)

输出:

False ['/Users/lafllamme/Projects/transcript-app/labels.csv', '/Users/lafllamme/Projects/transcript-app/temp', '/Users/lafllamme/Projects/transcript-app/.DS_Store', '/Users/lafllamme/Projects/transcript-app/requirements.txt', '/Users/lafllamme/Projects/transcript-app/tempDir', '/Users/lafllamme/Projects/transcript-app/pycache', '/Users/lafllamme/Projects/transcript-app/env', '/Users/lafllamme/Projects/transcript-app/.gitignore', '/Users/lafllamme/Projects/transcript-app/wandering-sponge-4.pth', '/Users/lafllamme/Projects/transcript-app/helper.py', '/Users/lafllamme/Projects/transcript-app/.gitattributes', '/Users/lafllamme/Projects/transcript-app/app.py', '/Users/lafllamme/Projects/transcript-app/packages.txt', '/Users/lafllamme/Projects/transcript-app/.git', '/Users/lafllamme/Projects/transcript-app/label_embeddings.npy', '/Users/lafllamme/Projects/transcript-app/distilbert-dlf', '/Users/lafllamme/Projects/transcript-app/distilbert-dlf/config.json', '/Users/lafllamme/Projects/transcript-app/distilbert-dlf/pytorch_model.bin']

我想实现这样的目标:

if (file1, file2 not in directory and file 3 not in subdirectory):
   ....

解法:

for model in Path().cwd().glob("./*"):
    foundFiles.append(str(model))
for files in Path().cwd().glob("distilbert-dlf/*"):
    foundFiles.append(str(files))

checkFiles = ("distilbert-dlf/pytorch_model.bin", "wandering-sponge-4.pth", "label_embeddings.npy")
for path in checkFiles:
    if os.path.exists(path)==True:
        print('I found:', path)

你应该反其道而行之,看看检查文件是否在找到的文件中。否则,你寻找整个路径:

基本上,反转你的最后一个条件就足够了:

output = any([[checkFile in substring for substring in foundFiles] for checkFile in checkFiles])

如果至少有一个文件,这将是正确的。要知道他们是否都在这里:

output = all([any([checkFile in substring for substring in foundFiles]) for checkFile in checkFiles])