首页 > 其他分享 >文件和异常

文件和异常

时间:2022-11-15 20:00:12浏览次数:36  
标签:文件 Python open 代码 try 使用 异常

一、从文件中读取数据

1、读取整个文件

 

 

 

在这个程序中,第1行代码做了大量的工作。我们先来看看函数open()。要以任何方式使用文件——哪怕仅仅是打印其内容,都得先打开 文 件,这样才能访问它。函数open() 接受一个参数:要打开的文件的名称。Python在当前执行的文件所在的目录中查找指定的文件。在这个示 例中,当前运行的是file_reader.py,因此Python在file_reader.py所在的目录中查找pi_digits.txt。函数open() 返回一个表示文件的对象。在这里, open('pi_digits.txt') 返回一个表示文件pi_digits.txt 的对象;Python将这个对象存储在我们将在后面使用的变量中。   关键字with 在不再需要访问文件后将其关闭。在这个程序中,注意到我们调用了open() ,但没有调用close() ;你也可以调用open() 和 close() 来打开和关闭文件,但这样做时,如果程序存在bug,导致close() 语句未执行,文件将不会关闭。这看似微不足道,但未妥善地 关闭文件可能会导致数据丢失或受损。如果在程序中过早地调用close() ,你会发现需要使用文件时它已关闭 (无法访问),这会 导致更多的错误。并非在任何情况下都能轻松确定关闭文件的恰当时机,但通过使用前面所示的结构,可让Python去确定:你只管打开文 件,并在需要时使用它,Python自会在合适的时候自动将其关闭。   相比于原始文件,该输出唯一不同的地方是末尾多了一个空行。为何会多出这个空行呢?因为read() 到达文件末尾时返回一个空字符串,而 将这个空字符串显示出来时就是一个空行。要删除多出来的空行,可在print 语句中使用rstrip() : print(contents.rstrip())、

2、文件路径

相对文件路径让Python到指定的位置去查找,而该位置是相对于当前运行的程序所在目录的。 在Windows系统中,在文件路径中使用反斜杠(\ )而不是斜杠(/ )

 

绝对路径通常比相对路径更长,因此将其存储在一个变量中,再将该变量传递给open() 会有所帮助

 

 3、逐行读取

 

4、创建一个包含文件各行内容的列表

 

方法readlines() 从文件中读取每一行,并将其存储在一个列表中;接下来,该列表被存储到变量lines 中;在with 代码块外,我 们依然可以使用这个变量。在❷处,我们使用一个简单的for 循环来打印lines 中的各行。由于列表lines 的每个元素都对应于文件中的一 行,因此输出与文件内容完全一致。

5、使用文件的内容

 

注意 读取文本文件时,Python将其中的所有文本都解读为字符串。如果你读取的是数字,并要将其作为数值使用,就必须使用函 数int() 将其转换为整数,或使用函数float() 将其转换为浮点数。

 6、包含一百万位的大型文件

如果我们有一个文本文件,其中包含精确到小数点后1 000 000位而不是30位的圆周率值,也可创建一个包含所有这些数字的 字符串。为此,我们无需对前面的程序做任何修改,只需将这个文件传递给它即可。在这里,我们只打印到小数点后50位,以免终端为显示全 部1 000 000位而不断地翻滚。

二、写入文件

保存数据的最简单的方式之一是将其写入到文件中。通过将输出写入文件,即便关闭包含程序输出的终端窗口,这些输出也依然存在:你可以 在程序结束运行后查看这些输出,可与别人分享输出文件,还可编写程序来将这些输出读取到内存中并进行处理。

1、写入空文件

注意 Python只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数str() 将其转换为字符串格式。

2、写入多行 

3、附加到文件

如果你要给文件添加内容,而不是覆盖原有的内容,可以附加模式 打开文件。你以附加模式打开文件时,Python不会在返回文件对象前清空 文件,而你写入到文件的行都将添加到文件末尾。如果指定的文件不存在,Python将为你创建一个空文件。

 

 

 三、异常

1、处理ZeroDivisionError 异常

 

 2、使用try-except 代码块 

当你认为可能发生了错误时,可编写一个try-except 代码块来处理可能引发的异常。你让Python尝试运行一些代码,并告诉它如果这些代码 引发了指定的异常,该怎么办。

 3、else 代码块

有时候,有一些仅在try 代码块成功执行时才需要运行的代码;这些代码应放在else 代码块中。except 代码块告诉Python,如果它尝试运行try 代码块中的代码时引发了指定的异常,该怎么办

4、处理FileNotFoundError 异常

使用文件时,一种常见的问题是找不到文件:你要查找的文件可能在其他地方、文件名可能不正确或者这个文件根本就不存在。对于所有这些情形,都可使用try-except 代码块以直观的方式进行处理。 

 

5、分析文本

你可以分析包含整本书的文本文件。很多经典文学作品都是以简单文本文件的方式提供的,因为它们不受版权限制。本节使用的文本来自项目 Gutenberg(http://gutenberg.org/ ),这个项目提供了一系列不受版权限制的文学作品,如果你要在编程项目中使用文学文本,这是一个很不错的资源。

 

 6、失败时一声不吭 

要让程序在失败时一声不吭,可像通常那样编写try 代码块,但在except 代码块中明确地告诉Python什么 都不要做。Python有一个pass 语句,可在代码块中使用它来让Python什么都不要做

 

四、存储数据

1、使用json.dump() 和json.load()

json.dump()存储数据,json.load()读取数据

2、保存和读取用户生成的数据

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:文件,Python,open,代码,try,使用,异常
From: https://www.cnblogs.com/buffaloes/p/16893685.html

相关文章

  • 解决Linux系统下U盘只读文件系统问题
    https://blog.csdn.net/ojbko/article/details/107483568?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromB......
  • linux搭建NFS文件共享服务器的步骤详解
    搭建步骤1、安装nfs所需软件包yuminstallrpcbindnfs-utils2、创建测试文件并赋权限mkdir/home/testchmod-R777/home/test/cd/home/test/vimaaa/bbb.txt......
  • mysql使用load data导入数据文件
    参考:http://www.jquerycn.cn/a_130011)、将mysql中的数据批量导入文件中指定a,b,c字段复制代码代码如下:selecta,b,cfromtable1intoOUTFILE'/home/me/data/tabl......
  • 删除文件中的某一行
    这种情况只能先把该文件全部读取下来,比如说读成一个String字符串,然后用String的方法处理然后把这些数据写回文件,和原来文件同名,就相当于覆盖该文件其实从windows的记事本......
  • Python匹配同名不同后缀的文件
    是这样的,之前手机备份图片到电脑,由于苹果拍照开了Live模式,所以它导出的图片有一个2秒的视频(.mov)跟一张静态图(.jpg/.heic),静态图输出取决当时导出的选项。现在想恢......
  • 01.删除GitHub仓库里的一个文件夹
    删除GitHub仓库里的一个文件夹1、复制仓库地址2、在本地新建一个空文件夹3、在空文件夹内,右键选择GitBashHere4、弹出GITBash框5、克隆远程仓库6.拉取远程仓库......
  • MySQL、Kafka(含zookeeper)、Redis的docker-composer文件
    以下docker-composer文件仅用于开发环境,快速搭建原型使用,生产环境,请进行针对性设置。MySQLversion:'3.1'services:db:image:mysql:8.0.28command:--d......
  • FileInputStream 、FileOutputStream完成非文本文件复制
    【1】读入一个字节写出一个字节packagecom.msb.io02;importjava.io.*;/***@author:liu*日期:14:00:25*描述:IntelliJIDEA*版本:1.0*/publiccla......
  • FileInPutStream读取文件中内容
    【1】读取文本文件packagecom.msb.io02;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException......
  • [zookeeper] 异常关闭 还能继续提供服务吗?
    Zookeeper作为注册中心的时候StandAlone:-Consumer:1.有缓存的Consumer能调用已缓存的Provider,并一直尝试重连Zookeeper,直到Zookeeper再次启动2.新的Consumer会启......