我有一个用于GUI的python项目,可与我们的计算集群中的Slurm排队管理器一起使用。我可以做的一件事是在文本窗口中为特定作业打印某些文件的内容。
但是,人们用于同一类型文件的扩展名有时会更改。我可以对其进行编程,使其对我有用,但我也希望能够查找其他人的文件。
我解决这个问题的方法如下
extensions = [".ex1", ".ext2", "ext3"]
for ext in extensions:
try:
f = open(jobname+ext), "r")
content = f.read()
f.close()
<doing some stuff with content>
except IOError:
if ext == extensions[-1]:
print("File not found")
return
如果
extensions
涵盖了所使用的实际扩展名,那么我的代码将找到它。我想知道经验丰富的程序员是否有更好/更优雅/更有效的方法。幸运的是,要读取的文件很小,因此遍历所有可能性将不会花费很多时间。但是此特定解决方案可能不适用于其他情况。 最佳答案
据我了解的问题,您已经知道文件名和路径,只有扩展名是未知的。
使用glob
包查找具有以下名称的所有文件:
from glob import glob
matches = glob("/path/to/files/knownfilename.*")
if not matches:
print("File not found!")
return
try:
with open(matches[0], "r") as f:
content = f.read()
# do stuff
except IOError:
print("Error reading file {}".format(matches[0]))
在这种情况下,您可能不得不处理以下可能性:
有多个具有该名称和不同扩展名的文件
matches
列表中的第一个文件不是您想要的文件类型(可能是某些扩展名为.bak的备份文件或其他),因此您可能还希望将某些扩展名列入黑名单关于python - 从一小部分可能的Python文件名中确定正确文件名的好方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55399204/