Loading... # 第九章 文件 ## 9.1 从文件中读取数据 ### 9.1.1 读取整个文件 ``` pi.txt 3.14159 26535 89793 ``` ```python with open('pi.txt','r') as file_object: contents = file_object.read() print(contents) ``` 输出: ``` 3.14159 26535 89793 ``` - `with open()`可以不需要在访问文件后关闭,随着with的结束,文件会自动关闭 - `open()`将目标文件打开,当做一个对象。 - `read()`将文件中所有内容读取为一个长长的字符串 - 输出的文本最后有空行是因为read()达到文件尾时会返回一个空字符串。消除空行可用rstrip() ### 9.1.2 逐行读取 ```python with open('pi.txt','r') as file_object: for line in file_object: print(line) ``` 输出: ``` 3.14159 26535 89793 ``` 每行之间都有一个空行,是因为文本文件每行结尾都有一个<b>换行符</b>,而print()每次都会自动换行,所以多了一个换行。 将`print(line)`改为`print(line.rstrip())`即可解决 ### 9.1.3 创建一个包含文件各行内容的列表 ```python with open('pi.txt','r') as file_object: lines = file_object.readlines() for line in lines: print(line.strip()) ``` `readlines()`读取文本中的每一行,并存储在一个列表里。 调用len()可以获知文件内容的行数。 <b>这样可以让在with open结束后依然可以使用文本内容。</b> ### 9.1.4 replace()替换字符串的内容 ```python s = 'I Love C++' s.replace('C++','Python') print(s) ``` > I Love Python ## 9.2 写入文件 ### 9.2.1 写入空文件 ```python with open('filename', 'w') as fo: fo.write('I love you') ``` 打开文件,会发现文件内容为: > I love you ### 9.2.2 写入多行 ```python with open('filename', 'w') as fo: fo.write('I love you') fo.write('I love you too') ``` 打开文件,会发现文件内容为: > I love youI love you too write()不会像print()一样自动换行,所以要<b>自己添加换行符</b>。 ```python with open('filename', 'w') as fo: fo.write('I love you\n') fo.write('I love you too') ``` ### 9.2.3 在文件后附加内容 就是打开模式改为'a' ## 9.3 异常 ### 9.3.1 ZeroDivisionError异常 如果程序中出现除以0的情况,程序将会反馈Traceback错误信息:ZeroDivisionError ### 9.3.2 try-except 代码块 当你认为可能发生错误时,可编写一个`try-except`代码块来处理可能引发的异常。 ```python try: print(5/0) except: print("You can't divide by zero") ``` - 当`try`代码块出现异常时,Python将跳过`try`代码块而去执行`except`代码块。 ### 9.3.3 else 代码块 ```python num1 = 5 num2 = int(input()) answer = num1/num2 try: print(5/0) except: print("You can't divide by zero") else: print(answer) ``` -当`try`代码块执行成功时,将会接着执行`else`代码块 ### 9.3.4 FileNotFoundError异常 文件打开失败时会返回改错误 ### 9.3.5 split()处理字符串 `split()`函数将字符串根据空格分隔,并创建一个 <b>单词列表</b> ```python s = 'I love you' words = s.split() print(words) ``` > ['I', 'love', 'you'] 调用len()函数即可以获知字符串单词个数。 ### 9.3.6 处理多个文件 有一种方法是将一系列文件名存在列表里: ```python files = ['f1.txt', 'f2.txt', 'f3.txt'] for filename in files: with open(filename): ... ``` ### 9.3.7 使用pass语句跳过异常语句 ```python try: print(5/0) except: pass ``` `pass`语句会让Python什么都不做,“一声不吭”。 最后修改:2021 年 08 月 01 日 06 : 47 PM © 允许规范转载