gpt4 book ai didi

python - `open(fname, ' r').close( )` and ` os.path.isfile(fname)` 之间的区别

转载 作者:太空宇宙 更新时间:2023-11-04 10:09:54 25 4
gpt4 key购买 nike

我必须检查多个文件的存在和可读性。哪种方法最有效?

list_of_files = [fname1,fname2,fname3]
for fname in list_of_files:
try:
open(fname, 'r').close()
except IOError:
raise YourCustomError

list_of_files = [fname1,fname2,fname3]
for fname in list_of_files:
if not ps.path.isfile(fname):
raise YourCustomError

最佳答案

如果您打算使用这些文件,那么两者都不要。在您通话和使用文件之间,文件可能会被删除或权限发生更改,从而使该信息过时。相反,只需尝试使用该文件并在那里处理异常:

try:
with open(fname, 'r') as f:
# use f
except FileNotFoundError as e:
# file was deleted
except IsADirectoryError as e:
# path exists but is a directory
except PermissionError as e:
# you don't have permissions to read the file
except OSError as e:
# other error

但是,如果您正在编写一个向用户显示有关权限信息的工具,那么使用专门为此目的提供的方法和函数是有意义的,因此您应该使用 os.path.existsos.is_fileos.is_dir .

如果您要处理整个目录,请注意使用 os.scandir 效率更高并检查 DirEntry 对象上的方法。

关于python - `open(fname, ' r').close( )` and ` os.path.isfile(fname)` 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38997213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com