python:文件的基本操作IO

1.1文件操作介紹

1.1.1什么是文件

1.1.2文件的作用

大家應(yīng)該聽說過一句話:“好記性不如爛筆頭”斥扛。

不僅人的大腦會遺忘事情,計(jì)算機(jī)也會如此霞揉,比如一個程序在運(yùn)行過程中用了九牛二虎之力終于計(jì)算出了結(jié)果播聪,試想一下如果不把這些數(shù)據(jù)存放起來效诅,相比重啟電腦之后,“哭都沒地方哭了”

可見霎匈,在把數(shù)據(jù)存儲起來有做么大的價值

使用文件的目的:

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

1.2文件的打開與關(guān)閉

想一想:

如果想用word編寫一份簡歷暖释,應(yīng)該有哪些流程呢?

1.打開word軟件墨吓,新建一個word文件

2.寫入個人簡歷信息

3.保存文件

4.關(guān)閉word軟件

同樣球匕,在操作文件的整體過程與使用word編寫一份簡歷的過程是很相似的

1.打開文件,或者新建立一個文件

2.讀/寫數(shù)據(jù)

3.關(guān)閉文件

1.2.1打開文件

在python帖烘,使用open函數(shù)亮曹,可以打開一個已經(jīng)存在的文件,或者創(chuàng)建一個新文件

open(文件名秘症,訪問模式)

示例如下:

f = open('test.txt','w')

說明:

1.2.2關(guān)閉文件

close( )

示例如下:

#新建一個文件照卦,文件名為:test.txt

f = open('test.txt','w')

#關(guān)閉這個文件

f.close()

1.2.3路徑

1.2.3.1linux

1.2.3.2windows

1.3文件的讀寫

1.3.1寫數(shù)據(jù)(write)

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

demo:

f = open('test.txt','w')

f.write('hello

world, i am here!')

f.close()

注意:

·如果文件不存在那么創(chuàng)建,如果存在那么就先清空乡摹,然后寫入數(shù)據(jù)

1.3.2讀數(shù)據(jù)(read)

使用read(num)可以從文件中讀取數(shù)據(jù)役耕,num表示要從文件中讀取的數(shù)據(jù)的長度(單位是字節(jié)),如果沒有傳入num聪廉,那么就表示讀取文件中所有的數(shù)據(jù)

demo:

f = open('test.txt','r')

content =

f.read(5)

print(content)

print("-"*30)

content =f.read()

print(content)

f.close()

注意:

·如果open是打開一個文件蹄葱,那么可以不用謝打開的模式,即只寫open('test.txt')

·如果使用讀了多次锄列,那么后面讀取的數(shù)據(jù)是從上次讀完后的位置開始的

1.3.3讀數(shù)據(jù)(readlines)

就像read沒有參數(shù)時一樣图云,readlines可以按照行的方式把整個文件中的內(nèi)容進(jìn)行一次性讀取,并且返回的是一個列表邻邮,其中每一行的數(shù)據(jù)為一個元素

f = open('test.txt','r')

content =f.readlines()

print(type(content))

i=1

fortempincontent:

print("%d:%s"%(i,temp))

i+=1

f.close()

1.3.4讀數(shù)據(jù)(readline)

f = open('test.txt','r')

content =f.readline()

print("1:%s"%content)

content =f.readline()

print("2:%s"%content)

f.close()

讀文件的時候竣况,指針在移動

想一想

如果一個文件很大,比如5G筒严,試想應(yīng)該怎樣把文件的數(shù)據(jù)讀取到內(nèi)存然后進(jìn)行處理呢丹泉?

1.4應(yīng)用1:制作文件的備份

任務(wù)描述:

輸入文件的名字情萤,然后程序自動完成對文件進(jìn)行備份

參考代碼:

oldFileName = input("請輸入要拷貝的文件名字:")

oldFile = open(oldFileName,'r')

#如果打開文件

ifoldFile:

#提取文件的后綴

fileFlagNum = oldFileName.rfind('.')

iffileFlagNum >0:

fileFlag = oldFileName[fileFlagNum:]

#組織新的文件名字

newFileName = oldFileName[:fileFlagNum] +'[復(fù)件]'+ fileFlag

#創(chuàng)建新文件

newFile = open(newFileName,'w')

#把舊文件中的數(shù)據(jù),一行一行的進(jìn)行復(fù)制到新文件中

forlineContentinoldFile.readlines():

newFile.write(lineContent)

#關(guān)閉文件

oldFile.close()

newFile.close()

1.5文件的隨機(jī)讀寫

1.5.1獲取當(dāng)前讀寫的位置

在讀寫文件的過程中摹恨,如果想知道當(dāng)前的位置筋岛,可以使用tell()來獲取

#打開一個已經(jīng)存在的文件

f = open("test.txt","r")

str = f.read(3)

print("讀取的數(shù)據(jù)是: ", str)

#查找當(dāng)前位置

position = f.tell()

print("當(dāng)前文件位置: ", position)

str = f.read(3)

print("讀取的數(shù)據(jù)是: ", str)

#查找當(dāng)前位置

position = f.tell()

print("當(dāng)前文件位置: ", position)

f.close()

1.5.2定位到某個位置

如果在讀寫文件的過程中,需要從另外一個位置進(jìn)行操作的話晒哄,可以使用seek()

seek(offset, from)有2個參數(shù)

1.offset:偏移量

2.from:方向

a)0:表示文件開頭

b)1:表示當(dāng)前位置

c)2:表示文件末尾

demo:把位置設(shè)置為:從文件開頭睁宰,偏移5個字節(jié)

#打開一個已經(jīng)存在的文件

f = open("test.txt","r")

str = f.read(30)

print("讀取的數(shù)據(jù)是: ", str)

#查找當(dāng)前位置

position = f.tell()

print("當(dāng)前文件位置: ", position)

#重新設(shè)置位置

f.seek(5,0)

#查找當(dāng)前位置

position = f.tell()

print("當(dāng)前文件位置: ", position)

f.close()

demo:把位置設(shè)置為:離文件末尾,3字節(jié)處

#打開一個已經(jīng)存在的文件

f = open("test.txt","r")

#查找當(dāng)前位置

position = f.tell()

print("當(dāng)前文件位置: ", position)

#重新設(shè)置位置

f.seek(-3,2)

#讀取到的數(shù)據(jù)為:文件最后3個字節(jié)數(shù)據(jù)

str = f.read()

print("讀取的數(shù)據(jù)是: ", str)

f.close()

1.6文件的重命名寝凌、刪除

有些時候柒傻,需要對文件進(jìn)行重命名、刪除等一些操作较木,python的os模塊中都有這么功能

1.6.1文件重命名

os模塊中的rename()可以完成對文件的重命名操作

rename(需要修改的文件名,新的文件名)

importos

os.rename("畢業(yè)論文.txt","畢業(yè)論文-最終版.txt")

1.6.2刪除文件

os模塊中的remove()可以完成對文件的刪除操作

remove(待刪除的文件名)

importos

os.remove("畢業(yè)論文.txt")

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末红符,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子伐债,更是在濱河造成了極大的恐慌预侯,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件峰锁,死亡現(xiàn)場離奇詭異萎馅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)祖今,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門校坑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人千诬,你說我怎么就攤上這事耍目。” “怎么了徐绑?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵邪驮,是天一觀的道長。 經(jīng)常有香客問我傲茄,道長毅访,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任盘榨,我火速辦了婚禮喻粹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘草巡。我一直安慰自己守呜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著查乒,像睡著了一般弥喉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上玛迄,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天由境,我揣著相機(jī)與錄音,去河邊找鬼蓖议。 笑死虏杰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拒担。 我是一名探鬼主播嘹屯,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼攻询,長吁一口氣:“原來是場噩夢啊……” “哼从撼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钧栖,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤低零,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拯杠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掏婶,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年潭陪,在試婚紗的時候發(fā)現(xiàn)自己被綠了雄妥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡依溯,死狀恐怖老厌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情黎炉,我是刑警寧澤枝秤,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站慷嗜,受9級特大地震影響淀弹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜庆械,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一薇溃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缭乘,春花似錦沐序、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辕羽。三九已至,卻和暖如春垄惧,著一層夾襖步出監(jiān)牢的瞬間刁愿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工到逊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铣口,地道東北人。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓觉壶,卻偏偏與公主長得像脑题,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子铜靶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 學(xué)習(xí)處理文件和保存數(shù)據(jù)可以使程序使用起來更容易叔遂,用戶將能夠選擇輸入什么樣的數(shù)據(jù), 以及在什么時候輸入争剿; 用戶使用你...
    路_堯知百戰(zhàn)勝閱讀 647評論 0 0
  • 一.常見的模式 二.例子如下 # r模式 file=open('haha.html','r',encoding='...
    __Python__閱讀 387評論 0 1
  • 1 IO In :輸入讀入已艰;從硬盤中讀到內(nèi)存。 Out :輸出蚕苇;從內(nèi)存中寫到硬盤 1.1 什么是文件 Txt 哩掺,a...
    TENG書閱讀 421評論 0 0
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,444評論 0 17
  • 聽狗子以前說想入藏 想看藍(lán)天白云布達(dá)拉宮 想凈化一下那顆猥瑣的心 什么時候帶著我的狗子出去呢 聽說這個時候入藏是最...
    蘑菇蘑菇哇閱讀 434評論 0 0