国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

給Python學習者的文件讀寫指南(含基礎與進階)

2020-02-15 21:28:45
字體:
來源:轉載
供稿:網友

對于初學者來說,一份詳盡又清晰明白的指南很重要。今天,貓貓跟大家一起,好好學習Python文件讀寫的內容,這部分內容特別常用,掌握后對工作和實戰都大有益處。學習是循序漸進的過程,欲速則不達。文章較長,建議大家收藏,以備復習查閱哦。

1、如何將列表數據寫入文件?
2、如何從文件中讀取內容?
3、多樣需求的讀寫任務
4、從with語句到上下文管理器

如何將列表數據寫入文件?

首先,我們來看看下面這段代碼,并思考:這段代碼有沒有問題,如果有問題的話,要怎么改?

li = ['python',' is',' a',' cat']with open('test.txt','w') as f:  f.write(li)

現在公布答案,這段代碼會報錯:

TypeError  Traceback (most recent call last)
<ipython-input-6-57e0c2f5a453> in <module>()
      1 with open('test.txt','w') as f:
----> 2     f.write(li)

TypeError: write() argument must be str, not list

以上代碼的想法是將list列表內容寫入txt文件中,但是報錯 TypeError: write() argument must be str。就是說,write()方法必須接受字符串(str)類型的參數。

Python中內置了str()方法,可以返回字符串版本的對象(Return a string version of object)。所以,上面的例子中,我們試試把 f.write(li) 改為 f.write(str(li)) ,先做一下字符串類型的轉化看看。代碼略。

這次沒有報錯了,但是打開文件就傻眼了吧,寫入的內容是“['python',' is',' a',' cat']”。怎么才能寫成“python is a cat”呢?

文件寫操作還有一個writelines()方法,它接收的參數是由字符串組成的序列(sequence),實際寫入的效果是將全部字符串拼接在一起。字符串本身也是一種序列,所以當參數是字符串的時候,writelines()方法等價于write()。

# 以下3種寫法等價,都是寫入字符串“python is a cat”In [20]: with open('test.txt','w') as f:  ...:   f.writelines(['python',' is',' a',' cat'])  ...:   f.writelines('python is a cat')  ...:   f.write('python is a cat')# 以下2種寫法等價,都是寫入列表的字符串版本“['python',' is',' a',' cat']”In [21]: with open('test.txt','w') as f:  ...:   f.write(str(['python',' is',' a',' cat']))  ...:   f.writelines(str(['python',' is',' a',' cat']))# 作為反例,以下寫法都是錯誤的:In [22]: with open('test.txt','w') as f:  ...:   f.writelines([2018,'is','a','cat']) # 含非字符串  ...:   f.write(['python','is','a','cat']) # 非字符串

由上可知,當多段分散的字符串存在于列表中的時候,要用writelines()方法,如果字符串是一整段,那直接使用write()方法。如果要以整個列表的形式寫入文件,就使用str()方法做下轉化。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江源县| 花莲县| 日照市| 叶城县| 临湘市| 南京市| 依安县| 新民市| 塔河县| 新竹市| 泗洪县| 山阴县| 东台市| 子洲县| 客服| 获嘉县| 收藏| 平谷区| 清新县| 毕节市| 商洛市| 巴青县| 丁青县| 新化县| 济源市| 井陉县| 天柱县| 勃利县| 长顺县| 永济市| 安多县| 肥西县| 资源县| 临安市| 南宁市| 古浪县| 秀山| 玛纳斯县| 长白| 永胜县| 民县|