|
|
|
|
移动端

2.6.2 写文件

《自学Python:编程基础、科学计算及数据分析》第2章Python 基础,在本章中,我们将学习Python 语言的基本使用,掌握Python 的基本使用方法,为后续的学习打下基础。本节为大家介绍写文件。

作者:李金来源:机械工业出版社|2018-05-03 21:23

人工智能+区块链的发展趋势及应用调研报告


2.6.2 写文件

写文件同样使用open()函数,只不过我们需要改变它的文件打开方式。

open()函数默认的打开方式为只读,即“mode='r'”:

  1. open(name, mode='r'

写文件的时候,可以将模式转化为写:

  1. In [1]: f = open('myfile.txt', 'w') 

w表示文件是只写模式(Write-Only Mode),在该模式下,如果文件不存在,这个文件会被创建出来;如果文件存在,文件中的内容将被清空。

可以使用文件对象的.write()方法向其中写入文字:

  1. In [2]: f .write('hello world!') 

文件写入完成后,和读文件一样,需要关闭这个文件:

  1. In [3]: f .close() 

我们可以通过读取这个文件的内容来验证是否已经将文字写入这个文件:

  1. In [4]: open('myfile.txt').read()  
  2. Out[4]: 'hello world!' 

如果文件已经存在,只写模式会清除之前文件的所有内容,重新开始写入,在这种情况下,文件中之前的数据是不可恢复的:

  1. In [5]: f = open('myfile.txt', 'w')   
  2. In [6]: f.write('another hello world!')   
  3. In [7]: f.close()   
  4. In [8]: open('myfile.txt').read()   
  5. Out[8]: 'another hello world!' 

除了只读、只写模式之外,open()函数还执行其他类型的操作模式,比如以 a表示的追加模式(Append Mode)。

追加模式不会覆盖原有的内容,而是从文件的结尾开始写入:

  1. In [9]: f = open('myfile.txt', 'a')   
  2. In [10]: f.write(' and more!')   
  3. In [11]: f.close()   
  4. In [12]: open('myfile.txt').read()   
  5. Out[12]: 'another hello world! and more!' 

处于只读或者追加模式的文件对象不能同时进行读取操作,而处于只读模式的文件不能同时进行写入操作。我们可以使用“w+”表示的读写模式实现同时读取和写入文件。读写模式仍然会清除之前已有的内容,不过增加了读取当前写入的内容的功能:

  1. In [13]: f = open('myfile.txt', 'w+')   
  2. In [14]: f.write('hello world!')   
  3. In [15]: data = f.read()   
  4. In [16]: f.close()   
  5. In [17]: data   
  6. Out[17]: 'hello world!' 

打开文件之后,需要使用.close()方法关闭这个文件。在 Python中,当一个文件对象不再被其他变量引用时,Python会自动调用.close()方法关闭这个文件。因此,大多数情况下,即使我们忘记调用文件的.close()方法,文件最终还是会被正常关闭。

不过在少数情况下,如果我们在写文件时没有关闭文件,可能会遇到文件没有及时写入的问题:

  1. In [18]: f = open('newfile.txt','w')   
  2. In [19]: f.write('hello world')   
  3. In [20]: g = open('newfile.txt', 'r')   
  4. In [21]: g.read()   
  5. Out[21]: '' 

虽然写入了“hello world”,但是在文件关闭之前,这个内容并没有被完全写入磁盘。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Java程序员面试宝典

本书是程序员面试宝典系列中的一册,也是上一本《程序员面试宝典》的姊妹书。本书对程序设计面试中Java常见的题型和常用解答技巧进行了介绍...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊