伪代码:
def check_directory(directory):
"""Returns whether the directory has all the required names."""
names = ["love.dat", "love_p.dat", "love_r.dat", "love_q.dat"]
return all(os.path.exists(os.path.join(directory, x) for x in names))
特别注意,这通过使用路径连接方法(特定于操作系统)来使用“更智能”的文件名操作,但在这里正常的字符串操作很可能可以正常工作;另外请注意,它会测试这些名称的存在——如何做到这一点取决于你的确切环境和语言——而其余的只是设置它的样板。
如果“love”是词干而不是字面名称,则需要将其动态添加到名称列表中:
def check_directory(directory, stem):
"""Returns whether the directory has all the required names."""
names = [stem + x for x in [".dat", "_p.dat", "_r.dat", "_q.dat"]]
return all(os.path.exists(os.path.join(directory, x) for x in names))
print check_directory("/", "love") # example use
如果您想检查给定目录中所有可能的词干,您只需遍历该目录中的名称即可:
def find_file_groups(directory):
"""Returns groups of files as tuples of (base, _p, _r, _q)."""
for name in os.listdir(directory):
if name.endswith(".dat"): # apply more filters if required
base = name[:-4] # remove .dat
names = tuple(base + x for x in [".dat", "_p.dat", "_r.dat", "_q.dat"])
if all(os.path.exists(os.path.join(directory, x) for x in names)):
yield names