正文 【Python基础】8. 文件操作 拾年之璐 V管理员 /2020-08-08 /568 阅读 0808 ## 文件操作 [TOC] ### 1. 读取文件 #### 1.1 文件路径 读取文件使用的函数是 `open()` ,当然要给函数指定 `文件的位置`,即 `文件路径` 。 提供的路径主要有两种路径 + **相对文件路径**:即相对于当前运行的程序所在的目录。 + **绝对文件路径**:文件在计算机中的准确位置。 如果在当前运行的程序HelloWorld.py的同级目录下有一个名为file的文件夹,该文件夹下有一个名为data.txt的文件,那么这个文件路径就可以定义为: ```python file_path = 'file/data.txt' ``` 当然上面这个路径定义,使用的是相对路径。 如果使用绝对路径,那么应该这样定义: ```python file_path = 'D:/PycharmProjects/学习阶段/HelloWorld/file/data.txt' ``` #### 1.2 读取整个文件 已知在上面定义的txt 文件中写入了几行数字,那么可以使用下面这样的代码读取整个文件中的内容: ```python file_path = 'file/data.txt' with open(file_path) as file_object: contents = file_object.read() print(contents) ``` 可以将所有的文本打印出来: ``` 1024 2048 4096 ``` #### 1.3 逐行读取 如果想逐行读取文件,那么可以参考下面的示例: 示例: ```python lineNum = 1 file_path = 'file/data.txt' with open(file_path) as file_object: for line in file_object: print('第' + str(lineNum) + '行:' + line) lineNum += 1 ``` 示例输出: ``` 第1行:1024 第2行:2048 第3行:4096 ``` 在上面这个示例中,可以看到每一行都多输出了一个空行。**这是因为print语句加上一个换行符,文件的每一行也有一个换行符导致的。** 可以使用 `rstrip()` 解决。 示例: ```python lineNum = 1 file_path = 'file/data.txt' with open(file_path) as file_object: for line in file_object: print('第' + str(lineNum) + '行:' + line.rstrip()) # 这里加上rstrip() lineNum += 1 ``` 示例输出: ``` 第1行:1024 第2行:2048 第3行:4096 ``` 在以上的示例中,均采用for循环,在读取文件时,即将文件逐行输出。 其实还可以将文件中的每一行内容,存储在一个列表中,然后在使用的时候,直接使用列表。 示例: ```python lineNum = 1 file_path = 'file/data.txt' with open(file_path) as file_object: lines = file_object.readlines() # 然后通过列表读取数据 for line in lines: print('第' + str(lineNum) + '行:' + line.rstrip()) lineNum += 1 ``` 输出结果同上。 ### 2. 写入文件 #### 2.1 写入空文件 写入文件时,依旧使用 `open()` 方法。 其实在 `open()` 方法中,除了文件路径这个参数外,第二个参数是 `文件的模式` 。文件的模式主要有: + 'r':读取模式 + 'w':写入模式 + 'a':附加模式 + 缺省:只读模式 所以,写入文件,只需要将 `open()` 方法的第二个实参写为'w'即可。 > 注意:使用写入模式打开文件时,如果指定的文件不存在,则自动创建。如果该文件已存在,则将清空该文件!!! 示例: ```python file_path = 'file/data2.txt' with open(file_path, 'w') as file_object: file_object.write('WUT') ``` 将上面的代码运行后,将新建一个 `data2.txt` 的文件,并写入数据 `WUT` 。 > 注意:Python只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数str() 将其转换为字符串格式。 #### 2.2 写入多行 多写几行write语句,即可写入多行数据。 示例: ```python file_path = 'file/data2.txt' with open(file_path, 'w') as file_object: file_object.write('I love WUT') file_object.write('I love CST') ``` 上面这个示例将两个句子写入了data2.txt文件中。 这时,打开data2.txt,看到数据是这样的: ``` I love WUTI love CST ``` 其实想让其单行显示,只需要在每个写入语句末尾加上换行符。 示例: ```python file_path = 'file/data2.txt' with open(file_path, 'w') as file_object: file_object.write('I love WUT\n') file_object.write('I love CST\n') ``` 这时,打开data2.txt,看到数据是这样的: ``` I love WUT I love CST ``` 这符合我们的预期。 #### 2.3 内容追加 看到这里,内容追加也就很简单了。 直接使用 `附加模式` 打开文件,即可进行内容的追加。 接着上面的data2.txt文件,这次以附加模式打开这个文件,然后再写入几行数据: ```python file_path = 'file/data2.txt' with open(file_path, 'a') as file_object: file_object.write('Zhang San love WUT\n') file_object.write('Li Si love WUT,also\n') ``` 这时,即可将上面的内容追加到data2.txt文件中。 > 参考文献: > > [1] Python编程:从入门到实践 本文采用创作共用版权 CC BY-NC-SA 3.0 CN 许可协议,转载或复制请注明出处! -- 展开阅读全文 --