我有一个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
覆盖,那么我的代码将找到它。我想知道更有经验的程序员是否有更好/更优雅/更高效的方法。幸运的是,要读取的文件非常小,所以遍历所有的可能性不会花费太多时间。但这种特殊的解决方案可能不适用于其他情况。你知道吗
您可以使用^{} 语句打开一个文件,然后让它自动关闭。此外,您还可以将mode参数省略为
open()
(默认为'r'
),并可能在找到有效扩展名后添加break
:据我所知,您已经知道文件名和路径,只有扩展名是未知的。 使用
glob
包查找具有该名称的所有文件,如下所示:在这种情况下,你可能要处理
matches
列表中的第一个文件不是您想要的文件类型(可能是扩展名为.bak的备份文件或其他文件),因此您可能还希望将一些扩展名列入黑名单您可以使用
os.listdir('.')
获取当前工作目录中的文件名列表,使用for
循环遍历该列表,并从jobname
长度中分割文件名,然后使用in
操作符测试它是否是extensions
列表/元组中的扩展名之一。break
在处理文件之后,当找到具有所需名称的文件时。如果循环完成而没有中断,则使用else
块for
循环打印File not found
消息:相关问题 更多 >
编程相关推荐