大家好,欢迎来到IT知识分享网。
你平时是不是写检查文件是否存在也是同如下:
import os.path def read_file_data(file): if not os.path.exists(file): print(f"{file}文件不存在") return # 这里会有一个问题,当程序执行到这里的时候,某种原因这个文件被删掉了,这个时候执行下面的代码就会报错了。 with open(file) as f: data = f.read()
如代码注释,虽然前面的代码检查了文件的存在性,但是可能后面这个文件不存在了,这时候去打开文件就会失败了。所以我们需要对代码进行优化,做一个异常处理。
import os.path def read_file_data(file): if not os.path.exists(file): print(f"{file}文件不存在") return try: with open(file) as f: data = f.read() except FileNotFoundError: print(f"{file}文件不存在") return except IsADirectoryError: print(f"{file}是一个目录") return
现在感觉代码安全了,但是你有没有发现前面的检查文件是否存在没有任何意义,所以你可以把这部分代码删掉,最终变成:
import os.path def read_file_data(file): try: with open(file) as f: data = f.read() except FileNotFoundError: print(f"{file}文件不存在") return except IsADirectoryError: print(f"{file}是一个目录") return
其实代码还能再优化,我个人建议所有的文件操作,尽量使用pathlib:
import pathlib def read_file_data(file): try: data = pathlib.Path(file).read_text() except FileNotFoundError: print(f"{file}文件不存在") return except IsADirectoryError: print(f"{file}是一个目录") return
对pathlib的接口用法做个总结,特此声明,我也是偷懒,如下总结部分是摘自知乎:https://zhuanlan.zhihu.com/p/,如有侵权请告知。
pathlib操作 |
os及os.path操作 |
功能描述 |
Path.resolve() |
os.path.abspath() |
获得绝对路径 |
Path.chmod() |
os.chmod() |
修改文件权限和时间戳 |
Path.mkdir() |
os.mkdir() |
创建目录 |
Path.rename() |
os.rename() |
文件或文件夹重命名,如果路径不同,会移动并重新命名 |
Path.replace() |
os.replace() |
文件或文件夹重命名,如果路径不同,会移动并重新命名,如果存在,则破坏现有目标。 |
Path.rmdir() |
os.rmdir() |
删除目录 |
Path.unlink() |
os.remove() |
删除一个文件 |
Path.unlink() |
os.remove() |
删除一个文件 |
Path.unlink() |
os.unlink() |
删除一个文件 |
Path.cwd() |
os.getcwd() |
获得当前工作目录 |
Path.exists() |
os.path.exists() |
判断是否存在文件或目录name |
Path.home() |
os.path.expanduser() |
返回电脑的用户目录 |
Path.is_dir() |
os.path.isdir() |
检验给出的路径是一个文件 |
Path.is_file() |
os.path.isfile() |
检验给出的路径是一个目录 |
Path.is_symlink() |
os.path.islink() |
检验给出的路径是一个符号链接 |
Path.stat() |
os.stat() |
获得文件属性 |
PurePath.is_absolute() |
os.path.isabs() |
判断是否为绝对路径 |
PurePath.joinpath() |
os.path.join() |
连接目录与文件名或目录 |
PurePath.name |
os.path.basename() |
返回文件名 |
PurePath.parent |
os.path.dirname() |
返回文件路径 |
Path.samefile() |
os.path.samefile() |
判断两个路径是否相同 |
PurePath.suffix |
os.path.splitext() |
分离文件名和扩展名 |
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/123285.html