1 从文件中读取数据

1.1 读取整个文件

创建名为test的txt文本文件,添加内容如下所示:

1234567890
2345678901
3456789012

实现代码:

 with open('test.txt') as file_object:
contents = file_object.read()
print(contents)

运行结果:

工作原理:

#1 open()方法用于打开一个文件:输入参数---文件名称(默认在当前目录中查找);返回一个表示文件的对象。

#1 关键字with:打开文件后,Python会在合适的时候将打开的文件自动关闭,避免造成不必要的麻烦。

#2 read()方法:读取文件的全部内容,并将其作为一个长字符串存储在变量contents中。

#3 打印存储在变量contents中的内容。

打印结果与原始文件相比,末尾处出现一个空行。这是因为read()方法到达文件末尾时会返回一个空字符串,而将这个空字符串显示出来时就是一个空行。

要删除多余出来的空行,可使用rstrip()函数(删除字符串末尾空白):

 with open('test.txt') as file_object:
contents = file_object.read()
print(contents.rstrip())

运行结果:

1.2 文件路径

默认情况下,read()方法只会在当前目录中进行查找文件,不会在其子文件夹中查找。

如果要打开一个不在当前目录中的文件,则需要提供该文件路径,以便Python在特定路径去查找该文件。

有两种提供文件路径的方法:相对文件路径和绝对文件路径。

例如,假设Python源文件位于名为work的文件夹中,txt文件位于work的子文件夹files中。

这种情况下,我们可以提供相对文件路径来打开该文件夹中的文件:

 with open('files\test.txt') as file_object:

此外,你也可以提供绝对文件路径来打开该文件夹中的文件:

 with open('...\work\files\test.txt') as file_object:

当绝对文件路径比较长时,可以先将其存储在一个变量中,如file_path:

 file_path = '...\work\files\test.txt'
with open(file_path) as file_object: 

1.3 逐行读取

实现代码:

 filename = 'test.txt'

 with open(filename) as file_object:
for line in file_object:
print(line)

运行结果:

运行后发现每行文本之后都有空行,原因是:1. 文件中每行末尾都有一个看不见的换行符;2. print语句也会加上一个换行符。

因此每行文本后面都会跟随两个换行符:一个来自文件;一个来自print语句。

同样地,要消除这些空白行,可以在print语句中加入rstrip():

 filename = 'test.txt'

 with open(filename) as file_object:
for line in file_object:
print(line.rstrip())

运行结果:

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

使用关键字with时,open()返回的文件对象只在with代码块内可用。

若要在with代码块之外访问文件内容,可在with代码块内将文件的各行内容存储在一个列表中,并在with代码块外使用该列表。

实现代码:

 filename = 'test.txt'

 with open(filename) as file_object:
lines = file_object.readlines() for line in lines:
print(line.rstrip())

运行结果:

工作原理:

#4 readlines()从文件中读取每一行,并将其存储在一个列表中,再传递给变量lines。

当文件内容被读取到内存后,你就可以以任何方式使用这些数据了。

2 写入数据到文件中

2.1 写入空文件

要将文本写入文件,需要在调用open()时提供另一个实参,以告知Python你要写入打开的文件。

实现代码:

 filename = 'test.txt'

 with open(filename, 'w') as file_object:
file_object.write("Hello World!")

工作原理:

#3 open()提供了两个参数:1. 打开文件名称;2. 'w'告知Python以写入模式打开文件。

#4 write()方法将一个字符串写入文件。

[注1]:'r'表示只读模式,'a'表示附加模式,'r+'表示读取和写入模式。若省略此实参,Python将以默认的只读模式打开文件。

[注2]:若要写入的文件不存在,open()函数将自动创建它。

[注3]:千万小心,若指定文件已存在,Python将在返回文件对象之前清空该文件。

2.2 写入多行

函数write()不会在你写入的文本末尾添加换行符,因此,如果你写入多行时没有指定换行符,文件看起来可能不会那么的井然有序。

要让每个字符串单独占据一行,可以在write()语句中包含换行符。

实现代码:

 filename = 'test.txt'

 with open(filename, 'w') as file_object:
file_object.write("Hello World!\n")
file_object.write("my great friends.\n")

当然,你还可以使用空格、制表符和空行等来设置写入文本的格式。

2.3 附加到文件

如果你要给文件添加内容,而不是覆盖原有的内容,可以附加模式打开文件。

当你以附加模式打开文件时,Python不会在返回文件对象前清空文件,而你写入到文件的行都将添加到文件末尾。

如果指定的文件不存在,Python将为你创建一个空文件。

实现代码:

 filename = 'test.txt'

 with open(filename, 'a') as file_object:
file_object.write("Python\n")
file_object.write("Java\n")

运行结果:

Python读取和写入文件的更多相关文章

  1. python读取与写入csv,txt格式文件

    python读取与写入csv,txt格式文件 在数据分析中经常需要从csv格式的文件中存取数据以及将数据写书到csv文件中.将csv文件中的数据直接读取为dict类型和DataFrame是非常方便也很 ...

  2. 读取和写入 文件 (NSFIleManger 与 NSFileHandle)

    读取和写入 文件 //传递文件路径方法 -(id)initPath:(NSString *)srcPath targetPath:(NSString *)targetPath { self = [su ...

  3. python读取Excel表格文件

    python读取Excel表格文件,例如获取这个文件的数据 python读取Excel表格文件,需要如下步骤: 1.安装Excel读取数据的库-----xlrd 直接pip install xlrd安 ...

  4. python读取和写入csv文件

    读取csv文件: def readCsv(): rows=[] with file(r'E:\py\py01\Data\system.csv','rb') as f: reads=csv.reader ...

  5. python读取并写入mat文件

    用matlab生成一个示例mat文件: clear;clc matrix1 = magic(5); matrix2 = magic(6); save matData.mat 用python3读取并写入 ...

  6. python将对象写入文件,以及从文件中读取对象

    原文地址: http://www.voidcn.com/article/p-fqtqpwxp-wo.html 写入文件代码: >>> import sys, shelve >& ...

  7. python读取/创建XML文件

    Python中定义了很多处理XML的函数,如xml.dom,它会在处理文件之前,将根据xml文件构建的树状数据存在内存.还有xml.sax,它实现了SAX API,这个模块牺牲了便捷性,换取了速度和减 ...

  8. python读取、写入txt文本内容

    转载:https://blog.csdn.net/qq_37828488/article/details/100024924 python常用的读取文件函数有三种read().readline().r ...

  9. 【转】MFC中用CFile读取和写入文件2

    原文网址:http://blog.sina.com.cn/s/blog_623a7fa40100hh1u.html CFile提供了一些常用的操作函数,如表1-2所示. 表1-2  CFile操作函数 ...

随机推荐

  1. 吴裕雄--天生自然python学习笔记:python 用 Open CV抓取脸部图形及保存

    将面部的范围识别出来后,可以对识别出来的部分进行抓取.抓取一张图片中 的部分图形是通过 pillow 包中的 crop 方法来实现的 我们首先学习用 pillow 包来读取图片文件,语法为: 例如,打 ...

  2. 怎么保证RabbitMQ和kafuka集群的高可用性?

    rabbitMQ有三种模式:单机模式,普通集群模式,镜像集群模式 RabbitMQ的高可用性   RabbitMQ是比较有代表性的,因为是基于主从做高可用性的,我们就以他为例子讲解第一种MQ的高可用性 ...

  3. 让Spring不再难懂-aop篇

    什么是aop AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP允许 ...

  4. spring-mvc基于注解的配置

    将配置文件修改为: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt ...

  5. JavaScript 简介与语法

    一.JavaScript简介 ).head里面 ).body里面 (在body内最为严谨) ).</html>之后 //程序上来要执行的部分 [2]三个常用对话框 alert()警告对话框 ...

  6. 总结verilog产生随机数的$random和seed

      $random(seed)是verilog中最简单的产生随机数的系统函数. 在调用系统函数$random(seed)时,可以写成三种样式:1)$random,2)$random(),3)$rand ...

  7. markdown常见用法

      命令  生成目录  [TOC]  插入标题  # 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六季标题  插入shell 开头:```shell 结尾 ...

  8. IDEA 中tomcat上面有个x 而且找不到配置tomcat的选项

    在使用idea时候,准备启动服务器,tomcat突然上面有个xx 解决方式 在 File-settings-plugins 搜索tomcat 如果插件后面有 就重新取消之后再勾选,然后点应用就可以解决 ...

  9. 通过命令行创建Django项目

    只有安装的是pycharm专业版才可以直接在pycharm面板中直接创建Django项目 如果不是专业版,可以通过命令行创建Django项目 https://www.cnblogs.com/jiare ...

  10. 2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 2) P-Fear Factoring 区间内数的所有因数的和(除法分块)

    题意就是标题. 思路: 对于每个数 a 算出 1~a 的所有因数和sum(a),输出sum(b)-sum(a-1). 关键在于如何求出 sum. 首先发现因数∈ 1 ≤ i ≤ n ,每个因数在区间[ ...