python中open函数详解

在python中文件的读取分为三步走:
读:打开文件 -> 读文件 -> 关闭文件
(有点像把大象放进冰箱需要几步?的问题)

1、open函数

open函数主要运用到两个参数,文件名和mode,文件名是添加该文件对象的变量,mode是告诉编译器和开发者文件通过怎样的方式进行使用。因此在Python中打开文件的代码如下:

file_object = open('filename','mode','encoding')

mode
mode参数可以不写,默认mode参数是“r”。mode参数如下:

  • ‘r’ – 只读模式,当文件处在”只读“的模式时使用。
  • ‘w’ – 写入模式,将新信息编辑写入文件中的时候使用(使用高模式的时候、任何现存的同名文件的内容将会被擦除,从而写入新的内容分)
    写入模式要慎用,哪怕仅仅是运行了file=open(”filename“,”w“)这句话,那么该文件中所有内容全部被擦除。
  • ‘a’ – append模式,将新数据加到文件末尾,不会擦除现存的同名文件的内容。
  • ‘r+’ – 特殊的”读取“ + ”写入“模式,当同时存在读写操作的时候使用
    总结为一张图为:
  • 第三个参数:encoding
  • 表示的是返回的数据采用何种编码,一般采用utf-8 或者 gbk(encoding参数也可以不写)

2、创建文本文件 create a text file

file = open('testfile.txt', 'w') 
  
file.write('Hello World\n') 
file.write('This is our new text file\n') 
file.write('and this is another line. \n') 
file.write('Why? Because we can. \n') 
  
file.close()

运行代码以后,在本地就会出现一个叫test file的文本文件,里面的内容为:
Hello World
This is our new text file
and this is another line
Why? Because we can.

3、读取:在python中读取txt文件

file = open('testfile.text', 'r') 
print(file.read())

将会把该文本文件中所有的内容展示出来
另外,如下只想打印文件文件中的部分内容,也可以采用下面的方式

file = open('testfile.txt', 'r')
print(file.read(5))

编译器将会读写文本文件中存储的前5个字符

逐行输出

如果想要逐行输出,而不是把所有内容打印出来,以至于没有换行、所有内容都挤在一起,那么需要调用readlines()函数。当调用这个方法的时候,将会把文本中的每一行作为一个元素放在list中,返回包含了所有行的list。

file = open('testfile.txt', 'r')
print(file.readlines())

如果需要指定打印出第二行,代码如下:

file = open('testfile.txt', 'r')
print(file.readlines()[1])

循环文本文件

我们也可以采用循环的方式的将文件中的内容逐行输出:

file = open('testfile.txt', 'r')
for line in file: 
    print(line)

4、文件写入

文件写入也是三步:打开文件——写入文件——关闭文件

file = open('testfile.txt', 'w')
 
file.write('This is a test') 
file.write('To add more lines.')
 
file.close()
  • open()函数中还是三个参数,其他都一样,除了要把第二个参数改成“w”,表示write,即以写入的模式打开文件。
  • ==注:==1、write()函数写入文本文件的也是字符串类型。2、在’w’ 和’a’模式下,如果你打开的文件不存在,那么open()函数会自动帮你创建一个

5、关闭文件

当操作完成之后,使用file.close()来结束操作,从而终结使用中的资源,从而能够释放内存。

  • 至于为啥要关闭文件呢?原因有两个:1、计算机能够打开的文件数量是有限制的,open()过多而不close()的话,就不能再打开文件了。2、能保证写入的内容已经在文件里被保存好了。

补充:

为了避免打开文件后忘记关闭,占用资源或当不能确定关闭文件的恰当时机的时候,我们可以用到关键字with,举例如下:

# 普通写法
file1 = open('abc.txt','a') 
file1.write('张无忌') 
file1.close()

# 使用with关键字的写法
with open('abc.txt','a') as file1:
#with open('文件地址','读写模式') as 变量名:
    #格式:冒号不能丢
    file1.write('张无忌') 
    #格式:对文件的操作要缩进
    #格式:无需用close()关闭

6、总结:

1、打开文本文件:

fh = open('hello.txt', 'r')

2、读取文本文件:

fh = open('hello.txt', 'r') 
print(fh.read())

3、将新的信息写入文本中、并擦除原来的信息:

fh = open('hello.txt', 'w') 
  
fh.write('Put the text you want to add here') 
fh.write('and more lines if need be.') 
  
fh.close()

4、在现存的文件中加入新的内容、不会擦除原来的内容:

fh = open('hello.txt', 'a') 
fh.write('We Meet Again World') 
fh.close()