百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

在python中如何去检测文件是否存在?

off999 2024-10-12 06:17 83 浏览 0 评论

你平时是不是写检查文件是否存在也是同如下:

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/475661402,如有侵权请告知。

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()

分离文件名和扩展名

相关推荐

winxp安装盘(winxp系统安装)

xp系统安装步骤如下1、将下载的xp系统iso压缩包文件下载到C盘之外的分区,比如下载到D盘,右键使用WinRAR等工具解压到当前文件夹或指定文件夹,不能解压到C盘和桌面,否则无法安装;?2、解压之后...

现在的win11稳定了吗(win11稳定嘛)

windows10更稳定,由于win11刚刚推出没多久,稳定差不够好,兼容性也有待提升,无论是应用还是游戏都会遇到不明程度的问题,因此,在日常的使用过程中,我们还是应当以稳定性为优先,选择win10是...

xp安装包下载到手机(xp系统安装包)

手机是基于ARM架构的处理器,而WindowsXP是基于x86架构的操作系统,因此无法直接在手机上安装WindowsXP。除非您的手机是使用Intel处理器,但这种情况非常罕见。如果您需要在手机上...

如何查看硬盘序列号(windows如何查看硬盘序列号)

1.打开开始菜单栏,输入【cmd】点击【确定】;2.在命令窗口依次输入【diskpart】-【listdisk】-【selectdisk0】;3.选好要查看的硬盘后,接着输入【detaildi...

虚拟机安装win7教程(虚拟机安装win7教程图解)

1.首先,下载并安装虚拟机软件,如VMwareWorkstation、VirtualBox等。2.打开虚拟机软件,创建一个新的虚拟机。3.在创建虚拟机的过程中,选择安装Windows7专业版的IS...

系统脱敏法的操作程序如何

系统脱敏疗法(systematicdesensitization)又称交互抑制法,是由美国学者沃尔普创立和发展的。这种方法主要是诱导求治者缓慢地暴露出导致神经症焦虑、恐惧的情境,并通过心理的放松状态...

闪迪u盘低级格式化工具(闪迪u盘格式化分配单元大小)

闪迪U盘格式化后速度变慢的可能原因及解决方法如下:文件系统问题:格式化时选择的文件系统类型可能会影响U盘的性能。常见的文件系统类型包括FAT32、NTFS和exFAT等。如果文件系统类型不合适,可能会...

psd文件下载(psd格式下载网站)

  1、在photoshop中,不能通过置入的方法来加载PSD文件,因为,通过置入的方法加载PSD文件,它是以合并图层的方法把PSD文件加入,这样,就失去了PSD文件的所有图层信息。  2、在文档中想...

宏碁官网下载win7系统(宏碁官方系统)

宏基笔记本win8系统换成win7步骤:1、更改bios设置,关闭“SecureBoot”功能,启用传统的“LegacyBoot”。2、制作u启动U盘启动盘,下载win7系统安装包3、设置U盘启动...

如何重装系统win7旗舰版32位

首先下载制作一个带系统的启动u盘,然后按以下步骤安装:1、首先关闭电脑上面的杀毒软件,2、进入bios选择u盘启动。3、插入启动u盘重新启动电脑4、进入pe系统镜像环节,选择要安装的系统(32位),然...

应用程序发生异常0xe0000008

先查看一下对应的软件是不是出现了损坏,也可以重装此软件。我们还可以尝试通过修改注册表来解决。按Win+R(或者在开始菜单搜索框输入“运行”)打开运行,然后输入“regedit”回车,打开注册表恢复原来...

笔记本连接wifi显示无法连接网络

笔记本电脑连接wifi时提示无法连接到这个网络1、打开电脑“控制面板”,点击“网络连接”,选择本地连接,右键点击本地连接图标后选“属性”,在“常规”选项卡中双击“Internet协议(TCP/IP)...

windowsc盘清理大师(c盘清理大师怎么样)

 C盘清理大师是一款流氓软件,可不是windows10里自带。在你的电脑上出现这个软件一般情况下可以证明你使用的系统是盗版的,系统采用的是网上流传的系统镜像制作的。在网上流传这些系统镜像文件...

realtek没声音如何设置(realtek怎么调出来)

你给无线连接配IP地址呗第一步:下载驱动精灵软件。第二步:安装驱动精灵软件。1、在打开的驱动软件安装窗口,确定程序安装路径后,点击:一键安装;2、正在安装。第三步:更新驱动程序。1、安装非常迅速,已经...

腾达路由器手机端登录入口(腾达路由器手机端登录入口在哪)

腾达路由器使用192.168.0.1或tendawifi.com作为登录地址。登录管理员页面的步骤:1、手机连接到腾达路由器的wifi信号;2、在手机上打开浏览器,在地址栏输入192.168.0.1后...

取消回复欢迎 发表评论: