Python之路-Python中文件和异常

一、文件的操作

  open函数

  在python中,使用open函数,打开一个已经存在的文件,或者新建一个新文件。

  函数语法 open(name[, mode[, buffering[,encoding]]])

  name : 一个包含了你要访问的文件名称的字符串值(区分绝对路径和相对路径)。

  mode : mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

  buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

  对于文件的操作结束之后,使用close()来关闭文件

  语法:文件对象.close()

  read(num):可以读取文件里面的内容。num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据

  with…open

  with open与open的区别

  关键字with在不再需要访问文件后将其关闭。这可让Python去确定:你只管打开文件,并在需要时使用它,Python自会在合适的时候自动将其关闭。

  也可以调用open()和close()来打开和关闭文件,但这样做时,如果程序存在bug,导致close()语句未执行,文件将不会关闭。

  访问模式

二、文件的读写

  readlines:可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素

  语法:readlines()

  例:

  with逐行读取

  如果想在with代码块外访问文件,怎么办?

  (readlines()从文件中读取每一行,并将其存储在一个列表中)

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

   写入文件

  如果你要写入的文件不存在,函数open()将自动创建它。

  使用文件对象的方法write()将一个字符串写入文件.这个程序是没有终端输出

  函数write()不会在你写入的文本末尾添加换行符,需要手动添加\n

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

  常用函数

练习:

1.在文本编辑器中新建一个文件,写几句话来总结一下你至此学到的Python 知识,其中每一行都以“In Python you can”打头。将这个文件命名为learning_python.txt,并将其存储到为完成本章练习而编写的程序所在的目录中。编写一个程序,它读取这个文件,并将你所写的内容打印三次:第一次打印时读取整个文件;第二次打印时遍历文件对象;第三次打印时将各行存储在一个列表中。

2.下面是一个简单的示例,演示了如何将句子中的'dog'替换为'cat':

>>> message = "I really like dogs."

>>> message.replace('dog', 'cat')

'I really like cats.'

读取你刚创建的文件learning_python.txt 中的每一行,将其中的Python 都替换为另 一门语言的名称,如C。将修改后的各行都打印到屏幕上。块外打印它们。

3.访客:编写一个程序,提示用户输入其名字;用户作出响应后,将其名字写 入到文件guest.txt 中。

4.访客名单:编写一个while 循环,提示用户输入其名字。用户输入其名字后, 在屏幕上打印一句问候语,并将一条访问记录添加到文件guest_book.txt 中。确保这个 文件中的每条记录都独占一行。

5.关于编程的调查:编写一个while 循环,询问用户为何喜欢编程。每当用户输 入一个原因后,都将其添加到一个存储所有原因的文件中。

 三、异常

  Python遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,则程序就会用所谓的回溯(Traceback,一种错误信息)来终止执行。

  异常处理

  异常是指在程序执行过程中发生的一个事件,会影响程序的正常运行,所以一般需要进行捕获异常并处理。

  异常的捕获使用try/except/finally语句进行捕获操作,并告诉python发生异常时怎么办.

  try:

    <语句>

  except <异常类型1>[, 异常参数名1]:

    <异常处理代码1>

  except <异常类型2>[, 异常参数名2]:

    <异常处理代码2>

  else:

    <没有异常时候的处理代码>

  finally:

    <不管是否有异常,最终执行的代码块>

  简单处理异常

  将导致错误的代码行open放在了一个try代码块中。

  如果try代码块中的代码运行起来没有问题,python将跳except代码块;

  如果try代码块中的代码导致了错误,python将查找这样的except代码块,并运行其中的代码,即其中指定的错误与引发的错误相同。

  异常处理

练习

发生错误时,如果程序还有工作没有完成,妥善地处理错误就尤其重要。这种情况经常会出现在要求用户提供输入的程序中;如果程序能够妥善地处理无效输入,就能再提示用户提供有效输入,而不至于崩溃。

创建一个只执行除法运算的简单计算器? 当被除数是0时我们怎么处理呢?

1 加法运算:提示用户提供数值输入时,常出现的一个问题是,用户提供的是文本而不是数字。在这种情况下,当你尝试将输入转换为整数时,将引发TypeError 异常。编写一个程序,提示用户输入两个数字,再将它们相加并打印结果。在用户输入的任何一个值不是数字时都捕获TypeError 异常,并打印一条友好的错误消息。对你编写的程序进行测试:先输入两个数字,再输入一些文本而不是数字。

2 加法计算器:将编写的代码放在一个while 循环中,让用户犯错(输入的是文本而不是数字)后能够继续输入数字。

3 猫和狗:创建两个文件cats.txt 和dogs.txt,在第一个文件中至少存储三只猫的名字,在第二个文件中至少存储三条狗的名字。编写一个程序,尝试读取这些文件,并将其内容打印到屏幕上。将这些代码放在一个try-except 代码块中,以便在文件不存在时捕获FileNotFound 错误,并打印一条友好的消息。

4 沉默的猫和狗:修改你在练习3中编写的except代码块,让程序在文件不存在时一言不发。

  小结:

  try语句按照如下方式工作:

  1.首先,执行try子句(在关键字try和关键字except之间的语句)

  2.如果没有异常发生,忽略except子句,try子句执行后结束。

  3.如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。

  4.如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。

  5.一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。

  6.多只有一个分支会被执行。 处理程序将只针对对应的try子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。

  7.一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组.

 四、文件夹操作

  python编程时,经常和文件、目录打交道,这是就离不了os模块。os模块包含普遍的操作系统功能,与具体的平台无关。

 

附:DOS命令

猜你喜欢

转载自www.cnblogs.com/lyywj170403/p/10334089.html