【笔记】python中处理FileNotFoundError异常、分析文本(方法split())、使用多个文件、静默失败(pass语句)

文章目录

  • 一、处理FileNotFoundError异常
  • 二、分析文本(方法split())
  • 三、使用多个文件
  • 四、静默失败

一、处理FileNotFoundError异常

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

:我们尝试读取一个不存在的文件。

filename = 'alice.txt'

with open(filename,encoding='utf-8') as f:
    contents = f.read()

我们看一下这个程序,相比于之前的文件打开方式,这里面有两个不同之处

使用变量f来表示文件对象,这是一种常见的做法。

给参数encoding指定了值,在系统的默认编码要读取文件使用的编码不一致时,必须这样做。

运行结果
【笔记】python中处理FileNotFoundError异常、分析文本(方法split())、使用多个文件、静默失败(pass语句)_第1张图片
python无法读取不存在的文件,因此引发了异常。

报错信息的最后一行代码报告了FileNotFoundError异常,这是python找不到要打开的文件时创建的异常。

在本例中,这个错误是函数open()导致的。因此要处理这个错误,必须将try语句放在包含open()的代码行之前

filename = 'alice.txt'

try:
    with open(filename,encoding='utf-8') as f:
        contents = f.read()
except FileNotFoundError:
    print(f"Sorry,the file {filename} does not exist.")

运行结果
【笔记】python中处理FileNotFoundError异常、分析文本(方法split())、使用多个文件、静默失败(pass语句)_第2张图片

二、分析文本(方法split())

方法split()能根据一个字符串创建一个单词列表。

:对童话名“Alice in wonderland”的字符串调用方法split()

title = "Alice in wonderland"
print(title.split())

运行结果
【笔记】python中处理FileNotFoundError异常、分析文本(方法split())、使用多个文件、静默失败(pass语句)_第3张图片
方法split()以空格为分隔符将字符串分拆成多个部分,并将这些部分都存储到一个列表中。

:确定本文有多少个单词

filename = 'alice.txt'

try:
    with open(filename,encoding='utf-8') as f:
        contents = f.read()
except FileNotFoundError:
    print(f"Sorry,the file {filename} does not exist.")
else:
    #计算该文件大致包含多少个单词
    words = contents.split()
    num_words = len(words)
    print(f"The file {filename} has about {num_words} words.")

三、使用多个文件

我们如果将上例程序中的大部分代码移到一个函数中,就可以利用循环对多本书进行分析。

def count_words(filename):
    """计算一个文件大致包含多少单词"""
    try:
        with open(filename, encoding='utf-8') as f:
            contents = f.read()
    except FileNotFoundError:
        print(f"Sorry,the file {filename} does not exist.")
    else:
        words = contents.split()
        num_words = len(words)
        print(f"The file {filename} has about {num_words} words.")


filename = 'alice.txt'
count_words(filename)

分析多个文件:

def count_words(filename):
    """计算一个文件大致包含多少单词"""
    try:
        with open(filename, encoding='utf-8') as f:
            contents = f.read()
    except FileNotFoundError:
        print(f"Sorry,the file {filename} does not exist.")
    else:
        words = contents.split()
        num_words = len(words)
        print(f"The file {filename} has about {num_words} words.")


filenames = ['alice.txt','siddhartha.txt','moby_dick.txt','little_women.txt']
for filename in filenames:
        count_words(filename)

如果分析的某个文件不存在,将丝毫不影响该程序处理其它文件。

四、静默失败

在程序中,并非每次捕获到异常都需要告诉用户,有时候我们希望程序发生异常时保持沉默,就像什么都没发生一样。

让程序静默失败,可想通常那样编写try代码块,但在except代码块中使用pass语句,可以让python在代码块中什么都不要做。

def count_words(filename):
    """计算一个文件大致包含多少单词"""
    try:
        with open(filename, encoding='utf-8') as f:
            contents = f.read()
    except FileNotFoundError:
        pass
    else:
        words = contents.split()
        num_words = len(words)
        print(f"The file {filename} has about {num_words} words.")


filenames = ['alice.txt','siddhartha.txt','moby_dick.txt','little_women.txt']
for filename in filenames:
        count_words(filename)

pass语句充当占位符

你可能感兴趣的:(Python笔记,python)