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()。要想使用文件第一步都得先打开文件,这样才能访问它,我们看一下这些函数都起到什么作用:

  1. 函数open()接受一个参数: 要打开的文件的名称。Python在当前执行的文件所在的目录中查找指定的文件。在这个示例中,函数open() 返回一个表示文件的对象。在这里,open(‘text01.txt’)返回一个表示文件text01.txt的对象;Python将这个对象存储在我们将在后面使用的file_read变量中。
  2. 关键字with在不再需要访问文件后将其关闭。在这个程序中,注意到我们调用了open(),但没有调用close();你也可以调用open()和close()来打开和关闭文件,如果有bug,导致close()语句未执行,文件将不会关闭。这样会导致文件损坏,如果过早调用close,将会导致程序bug,这会导致更多的错误。所以直接用with可以让程序自己去判断文件的关闭。
  3. 获取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之读取和写入文件的主要内容,如果未能解决你的问题,请参考以下文章

python之读取和写入csv文件

python之文件的读取与写入

Python3 关于excel 文件格式xls之读取写入和追加

flume系列之:python读取flume配置文件,并把配置写入到zookeeper节点,再根据写入到zookeeper中的配置启动flume agent

Python基础之文件目录操作

简单介绍python编程之文件读写