python之读取和写入文件
Posted 柳小葱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之读取和写入文件相关的知识,希望对你有一定的参考价值。
🌷python读取文件部分,一般我用的比较多的都是利用pandas库里面的read_xxx方法,对python自己内置的读取文件方法不是很了解,今天总结一下。
1.读取整个文件
我们首先有个text01.txt,我们读取整个文件,看看里面有什么内容
#读取整个文件
with open('text01.txt') as file_read:
content=file_read.read()
print(content)
结果如下:
我们先来看看函数open()。要想使用文件第一步都得先打开文件,这样才能访问它,我们看一下这些函数都起到什么作用:
- 函数open()接受一个参数: 要打开的文件的名称。Python在当前执行的文件所在的目录中查找指定的文件。在这个示例中,函数open() 返回一个表示文件的对象。在这里,open(‘text01.txt’)返回一个表示文件text01.txt的对象;Python将这个对象存储在我们将在后面使用的file_read变量中。
- 关键字with在不再需要访问文件后将其关闭。在这个程序中,注意到我们调用了open(),但没有调用close();你也可以调用open()和close()来打开和关闭文件,如果有bug,导致close()语句未执行,文件将不会关闭。这样会导致文件损坏,如果过早调用close,将会导致程序bug,这会导致更多的错误。所以直接用with可以让程序自己去判断文件的关闭。
- 获取text01.txt的文件对象后,我们使用方法read()读取这个文件的全部内容,并将其作为一个长长的字符串存储在变量contents中,打印出来。
2.文件路径
一般来说,如果需要读取的文件和程序文件在一个文件目录下面,open()函数中直接写文件路径名即可,如果不在同一目录下,那么就需要确定读取文件的确定位置。
我的文件在该目录下:
读取文件时这样,需要注意的是文件地址用的是 ‘\\’ 而不是 ‘/’ ,最重要的的是不要有中文目录,可能会报错,原因是因为中文的编码问题
#绝对路径读取文件
with open('\\Users\\macos\\pyproject\\text01.txt') as file_read:
content=file_read.read()
print(content)
3.逐行读取
读取文件时,常常需要检查其中的每一行:你可能要在文件中查找特定的信息,或者要以某种方式修改文件中的文本。
#逐行读取文件并输出
with open('text01.txt') as file_read:
for line in file_read:
print(line)
这里我们利用for循环将读取的内容逐行打印了出来。
使用关键字with时,open()返回的文件对象只在with代码块内可用。如果要在with代码块外访问文件的内容,可在with代码块内将文件的各行存储在一个列表中,并在with代码块外使用该列表:你可以立即处理文件的各个部分,也可推迟到程序后面再处理。
with open('text01.txt') as file_read:
#将文件存在lines中
lines = file_read.readlines()
#循环读取文件
for line in lines:
print(line.rstrip())#rstrip除去空白
readlines()从文件中读取每一行,并将其存储在一个列表中;接下来,该列表被存储到变量lines中;在with代码块外,我们依然可以使用这个变量。for循环来打印lines中的各行。由于列表lines的每个元素都对应于文件中的一行,因此输出与文件内容完全一致。
结果如下:
4.写入文件
读文件是使用文件的基础,那么写入文件就是保存文件的基础。
#将文本写入到text02.txt文件
with open('text02.txt','w') as file_read:
file_read.write('I love wulip')
结果如下:打开文件text02.txt
- 调用open()时提供了两个实参。第一个实参也是要打开的文件的名称; 第二个实参(‘w’)告诉Python,以写入模式打开这个文件。打开文件时,可指定读取模 式(‘r’)、写入模式(‘w’)、附加模式(‘a’)或让你能够读取和写入文件的模式(‘r+’)。如果你省略了模式实参,Python将以默认的只读模式打开文件。
- 如果你要写入的文件不存在,函数open()将自动创建它。 如果文件已经存在,将会清空文件内容,写入新的内容。
- 方法write()将一个字符串写入文件。
- Python只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数str()将其转换为字符串格式。
5. 写入多行
写入多行需要注意的是使用换行符,如果不使用,将还是在一行。
#不使用换行符
with open('text03.txt','w') as file_read:
file_read.write('I love wulip')
file_read.write('she is my apple')
结果都挤在一行了:
使用换行符后
with open('text03.txt','w') as file_read:
file_read.write('I love wulip \\n')
file_read.write('she is my apple \\n')
结果如下:
6.追加写入文件
上面我们说到‘w’模式是写入文件,会直接清除之前写入的内容,这里我们介绍一下怎么追加写入道文件中。
#追加写入文件
with open('text03.txt','a') as file_read:
file_read.write('wulip love me too \\n')
file_read.write('she is my baby \\n')
结果如下:
以附加模式 ‘a’ 打开文件时,Python不会在返回文件对象前清空文件,而你写入到文件的行都将添加到文件末尾。 如果指定的文件不存在,Python将为你创建一个空文件。
7. 参考资料
《python数据结构与算法》
《大话数据结构》
《python从入门到实践》
以上是关于python之读取和写入文件的主要内容,如果未能解决你的问题,请参考以下文章
Python3 关于excel 文件格式xls之读取写入和追加
flume系列之:python读取flume配置文件,并把配置写入到zookeeper节点,再根据写入到zookeeper中的配置启动flume agent