成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇文章帶你搞懂Python的文件讀寫

開發(fā) 后端
本文基于Python基礎(chǔ),使用Python語言,介紹了有關(guān)Python文件操作的知識點(diǎn)。從文件的基本概念入手 ,通過一個個小項(xiàng)目的演示,對常用的讀寫模式,文件對象操作方法,以及在實(shí)際應(yīng)用中需要注意的問題,都做了詳細(xì)的講解。希望幫助你更好的學(xué)習(xí)Python。

[[401879]]

一、什么是文件?

文件就是把一些存儲存放起來,可以讓程序下一次執(zhí)行的時候直接使用,而不必重新制作一份,省時省力。

二、文件如何的打開?

Python內(nèi)置了一個open()方法,可以對文件進(jìn)行讀寫操作。

使用open()方法操作文件就像把大象塞進(jìn)冰箱一樣,可以分三步走,一是打開文件,二是操作文件,三是關(guān)閉文件。

open語法

open()方法的返回值是一個file對象,可以將它賦值給一個變量(文件句柄)。

其基本語法格式為:

  1. f = open(filename, mode) 

注:

Python中,所有具有read和write方法的對象,都可以歸類為file類型。而所有的file類型對象都可以使用open方法打開,close方法結(jié)束。

filename:一個包含了你要訪問的文件名稱的字符串值,通常是一個文件路徑。

mode:打開文件的模式,有很多種,默認(rèn)是只讀方式r。

例:

  1. # 打開一個文件 
  2. f = open("1.txt""w"
  3. f.write("Python 是一種非常好的語言。\nPython!!\n"
  4. # 關(guān)閉打開的文件 
  5. f.close() 

運(yùn)行結(jié)果:

在1.txt文件中寫入Python 是一種非常好的語言。Python。

三、訪問模式

通過一個表格,了解Python常用的讀寫模式

如果要讀取非UTF-8編碼的文件,需要給open()函數(shù)傳入encoding參數(shù)。

例如,讀取GBK編碼的文件:

  1. >>> f = open('gbk.txt''r', encoding='gbk'
  2. >>> f.read() 
  3. 'GBK' #編碼 

遇到有些編碼不規(guī)范的文件,可能會拋出UnicodeDecodeError異常,這表示在文件中可能夾雜了一些非法編碼的字符。遇到這種情況,可以提供errors參數(shù),表示如果遇到編碼錯誤后如何處理。

  1. f = open('gbk.txt''r', encoding='gbk', errors='ignore'

四、 文件對象操作

用open方法打開一個文件,將返回一個文件對象。這個對象內(nèi)置了很多操作方法。

下面打開了一個f文件對象(1.txt)。對文件對象進(jìn)行相關(guān)的操作。

1. f.read(size)

讀取一定大小的數(shù)據(jù), 然后作為字符串或字節(jié)對象返回。size是一個可選的數(shù)字類型的參數(shù),用于指定讀取的數(shù)據(jù)量。當(dāng)size被忽略了或者為負(fù)值,那么該文件的所有內(nèi)容都將被讀取并且返回。

  1. f = open("1.txt""r"
  2.  
  3. str = f.read() 
  4. print(str) 
  5.  
  6. f.close() 

如果文件體積較大,請不要使用read()方法一次性讀入內(nèi)存,而是read(312)這種一點(diǎn)一點(diǎn)的讀。

2. f.readline()

從文件中讀取一行n內(nèi)容。換行符為'\n'。如果返回一個空字符串,說明已經(jīng)已經(jīng)讀取到最后一行。這種方法,通常是讀一行,處理一行的情況下使用。

  1. f = open("1.txt""r"
  2. str = f.readline() 
  3. print(str) 
  4. f.close() 

3. f.readlines()

將文件中所有的行,一行一行全部讀入一個列表內(nèi),按順序一個一個作為列表的元素,并返回這個列表。readlines方法會一次性將文件全部讀入內(nèi)存,所以也存在一定的弊端。但是它有個好處,每行都保存在列表里,可隨意存取。

  1. f = open("1.txt""r"
  2. a = f.readlines() 
  3. print(a) 
  4. f.close() 

4. 遍歷文件

實(shí)際情況中,我們會將文件對象作為一個迭代器來使用。

  1. # 打開一個文件 
  2. f = open("1.txt""r"
  3.  
  4. for line in f: 
  5.     print(line, end=''
  6.  
  7. # 關(guān)閉打開的文件 
  8. f.close() 

這個方法很簡單, 不需要將文件一次性讀出,但是同樣沒有提供一個很好的控制,與readline方法一樣只能前進(jìn),不能回退。

幾種不同的讀取和遍歷文件的方法比較:

如果文件很小,read()一次性讀取最方便;

如果不能確定文件大小,反復(fù)調(diào)用read(size)比較保險;

如果是配置文件,調(diào)用readlines()最方便。普通情況,使用for循環(huán)更好,速度更快。

5. f.write()

使用write()可以完成向文件寫入數(shù)據(jù)。

  1. # 打開一個文件 
  2. f = open("/tmp/foo.txt""w"
  3.  
  4. f.write("Python 是一種非常好的語言。\n我喜歡Python!!\n"
  5.  
  6. # 關(guān)閉打開的文件 
  7. f.close() 

6. f.tell()

返回文件讀寫指針當(dāng)前所處的位置,它是從文件開頭開始算起的字節(jié)數(shù)。一定要注意了,是字節(jié)數(shù),不是字符數(shù)。

7. f.seek()

如果要改變位置指針的位置, 可以使用f.seek(offset, from_what)方法。seek()經(jīng)常和tell()方法配合使用。

from_what的值,如果是0表示從文件開頭計(jì)算,如果是1表示從文件讀寫指針的當(dāng)前位置開始計(jì)算,2表示從文件的結(jié)尾開始計(jì)算,默認(rèn)為0,例如:

offset:表示偏移量。

  • seek(x,0) :從起始位置即文件首行首字符開始移動 x 個字符。
  • seek(x,1) :表示從當(dāng)前位置往后移動x個字符。
  • seek(-x,2):表示從文件的結(jié)尾往前移動x個字符。

例:

  1. f = open("1.txt""rb+"
  2. f.write(b"1232312adsfalafds"
  3.  
  4. print(f.tell()) 
  5.  
  6.  
  7. print(f.seek(5)) 
  8.  
  9. print(f.read(1)) 
  10.  
  11. print(f.seek(-3, 2)) 
  12.  
  13. print(f.read(1)) 

運(yùn)行結(jié)果:

8. f.close()

關(guān)閉文件對象。當(dāng)處理完一個文件后,調(diào)用f.close()來關(guān)閉文件并釋放系統(tǒng)的資源。文件關(guān)閉后,如果嘗試再次調(diào)用該文件對象,則會拋出異常。忘記調(diào)用close()的后果是數(shù)據(jù)可能只寫了一部分到磁盤,剩下的丟失了,或者更糟糕的結(jié)果。

五、 with關(guān)鍵字

with關(guān)鍵字用于Python的上下文管理器機(jī)制。為了防止open這一類文件打開方法,在操作過程出現(xiàn)異常或錯誤,或者最后忘了執(zhí)行close方法,文件非正常關(guān)閉等可能導(dǎo)致文件泄露、破壞的問題。

Python提供了with這個上下文管理器機(jī)制,保證文件會被正常關(guān)閉。不需要再寫close語句。注意縮進(jìn)。

  1. with open('test.txt''w'as f: 
  2.     f.write('Hello, world!'

with支持同時打開多個文件(文件都是隨機(jī)創(chuàng)建的):

  1. with open('1'as obj1, open('2','w'as obj2: 
  2.     s=obj1.read() 
  3.     obj2.write(s) 

六、總結(jié)

本文基于Python基礎(chǔ),使用Python語言,介紹了有關(guān)Python文件操作的知識點(diǎn)。從文件的基本概念入手 ,通過一個個小項(xiàng)目的演示,對常用的讀寫模式,文件對象操作方法,以及在實(shí)際應(yīng)用中需要注意的問題,都做了詳細(xì)的講解。希望幫助你更好的學(xué)習(xí)Python。

 

責(zé)任編輯:姜華 來源: Python爬蟲與數(shù)據(jù)挖掘
相關(guān)推薦

2021-05-18 09:00:28

Pythonclass

2021-08-02 10:01:09

Iterator接口Java項(xiàng)目開發(fā)

2021-05-21 09:01:56

Python繼承多態(tài)

2024-10-23 16:02:40

JavaScriptPromiserejection

2021-08-17 09:55:05

JavaScript MicrotaskPromise

2021-08-30 10:01:01

Map接口HashMap

2021-05-15 09:18:04

Python進(jìn)程

2022-02-21 09:44:45

Git開源分布式

2021-06-30 00:20:12

Hangfire.NET平臺

2023-05-12 08:19:12

Netty程序框架

2020-06-03 11:06:26

DNS域名緩存

2021-04-24 10:19:41

Python函數(shù)指向

2025-02-19 10:39:26

Python高階函數(shù)函數(shù)名

2021-05-15 10:16:14

Python匿名函數(shù)

2024-04-17 13:21:02

Python匿名函數(shù)

2021-03-24 10:00:32

Python遞歸函數(shù)Python基礎(chǔ)

2021-03-21 07:36:43

Python迭代知識語言

2023-05-08 08:21:15

JavaNIO編程

2021-09-27 09:18:30

ListIterato接口方法

2021-02-26 20:01:57

SVG濾鏡元素
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲一区二区三区高清 | 成人av在线大片 | av在线天天| 亚洲小视频在线观看 | 国产黄色精品在线观看 | 久久久av | 免费观看www7722午夜电影 | 成人欧美一区二区三区在线观看 | 91精品国产色综合久久 | 伊人春色在线观看 | 亚洲综合色视频在线观看 | 久久免费香蕉视频 | 视频一区中文字幕 | 91精品久久久久久久久久 | 精品久久香蕉国产线看观看亚洲 | 99成人精品| 午夜播放器在线观看 | av一级久久 | 一区二区精品 | 亚洲精品乱码久久久久久按摩 | 精品久久久久久红码专区 | 中文一区二区 | 成人深夜福利 | 91精品国产综合久久久久久首页 | 天堂一区在线观看 | 神马福利 | 国产特一级黄色片 | 欧美久久久久久久 | 欧美在线一区二区三区 | 久久精品青青大伊人av | 91久久精品一区 | 日韩在线一区二区三区 | 国产成人午夜电影网 | 欧美白人做受xxxx视频 | 亚洲精品一二区 | 羞羞网站在线观看 | 久草色视频 | 日韩综合在线视频 | 国产精品久久久久久久久久免费看 | 依人成人 | 亚洲精品久久区二区三区蜜桃臀 |