成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

文件操作

546669204 / 2874人閱讀

摘要:二文件操作操作文件時(shí),一般需要經(jīng)歷如下步驟打開(kāi)文件文件句柄文件路徑模式注中打開(kāi)文件有兩種方式,即和,本質(zhì)上前者在內(nèi)部會(huì)調(diào)用后者來(lái)進(jìn)行文件操作,推薦使用。

一 介紹

計(jì)算機(jī)系統(tǒng)分為:計(jì)算機(jī)硬件,操作系統(tǒng),應(yīng)用程序三部分。
我們用python或其他語(yǔ)言編寫(xiě)的應(yīng)用程序若想要把數(shù)據(jù)永久保存下來(lái),必須要保存于硬盤(pán)中,這就涉及到應(yīng)用程序要操作硬件,眾所周知,應(yīng)用程序是無(wú)法直接操作硬件的,這就用到了操作系統(tǒng)。操作系統(tǒng)把復(fù)雜的硬件操作封裝成簡(jiǎn)單的接口給用戶/應(yīng)用程序使用,其中文件就是操作系統(tǒng)提供給應(yīng)用程序來(lái)操作硬盤(pán)虛擬概念,用戶或應(yīng)用程序通過(guò)操作文件,可以將自己的數(shù)據(jù)永久保存下來(lái)。
文件路徑:
相對(duì)路徑:Linux和os x中用/,Windows中用,該位置相對(duì)于當(dāng)前程序所在目錄
絕對(duì)路徑:同上,讀取系統(tǒng)任何地方文件,由于在Python中是轉(zhuǎn)義符建議路徑前加上r
有了文件的概念,我們無(wú)需再去考慮操作硬盤(pán)的細(xì)節(jié),只需要關(guān)注操作文件的流程:
1、打開(kāi)文件,得到文件句柄并賦值給一個(gè)變量

f=open("a.txt","r",encoding="utf-8")  # 默認(rèn)打開(kāi)模式就為r

2、通過(guò)句柄對(duì)文件進(jìn)行操作

data=f.read()

3、關(guān)閉文件

f.close()  #操作過(guò)程存儲(chǔ)在內(nèi)存與緩存中,在程序結(jié)束或者close之后寫(xiě)入磁盤(pán)

上下文與回收
打開(kāi)一個(gè)文件包含兩部分資源:操作系統(tǒng)級(jí)打開(kāi)的文件+應(yīng)用程序的變量。在操作完畢一個(gè)文件時(shí),必須把與該文件的這兩部分資源一個(gè)不落地回收,回收方法為:
1、f.close() #回收操作系統(tǒng)級(jí)打開(kāi)的文件
2、del f #回收應(yīng)用程序級(jí)的變量
注意:其中del f一定要發(fā)生在f.close()之后,否則就會(huì)導(dǎo)致操作系統(tǒng)打開(kāi)的文件還沒(méi)有關(guān)閉,白白占用資源,而python自動(dòng)的垃圾回收機(jī)制決定了我們無(wú)需考慮del f,這就要求我們,在操作完畢文件后,一定要記住f.close()。如果程序存在bug,導(dǎo)致close()未執(zhí)行,文件不會(huì)關(guān)閉。

whit管理上下文:

with open("a.txt","w") as f:
    pass 
with open("a.txt","r") as read_f,open("b.txt","w") as write_f:
    data=read_f.read()
    write_f.write(data)

注意:當(dāng)with代碼塊執(zhí)行完畢時(shí),內(nèi)部會(huì)自動(dòng)關(guān)閉并釋放文件資源。open()返回的文件對(duì)象只在with內(nèi)可用,如果要在外部訪問(wèn)需將with內(nèi)創(chuàng)建列表,再?gòu)耐獠渴褂?br>文件編碼

f=open(...)是由操作系統(tǒng)打開(kāi)文件,那么如果我們沒(méi)有為open指定編碼,操作系統(tǒng)會(huì)用自己的默認(rèn)編碼去打開(kāi)文件,在windows下是gbk,在linux下是utf-8。
f=open("a.txt","r",encoding="utf-8")
二 文件操作

操作文件時(shí),一般需要經(jīng)歷如下步驟:
1、打開(kāi)文件
文件句柄 = file("文件路徑", "模式")
注:python中打開(kāi)文件有兩種方式,即:open(...) 和 file(...) ,本質(zhì)上前者在內(nèi)部會(huì)調(diào)用后者來(lái)進(jìn)行文件操作,推薦使用 open。

打開(kāi)文件的模式有:

打開(kāi)文件的模式有(默認(rèn)為文本模式):

r :只讀模式【默認(rèn)模式,文件必須存在,不存在則拋出異?!?/p>

w :只寫(xiě)模式【不可讀;不存在則創(chuàng)建;存在則清空原內(nèi)容寫(xiě)入新內(nèi)容】

a :追加寫(xiě)模式【不可讀;不存在則創(chuàng)建;存在則在光標(biāo)位置追加內(nèi)容】

非文本文件,我們只能使用b模式,"b"表示以字節(jié)的方式操作(無(wú)需考慮文本、圖片、視頻的格式):

rb :只讀模式

wb :修改并讀取

ab :追加字節(jié)

注意:以b方式打開(kāi)時(shí),讀取到的內(nèi)容是字節(jié)類型,寫(xiě)入時(shí)也需要提供字節(jié)類型,不能指定編碼

其他模式

"+" :表示可以同時(shí)讀寫(xiě)某個(gè)文件

r+ :讀寫(xiě)【可讀,可寫(xiě)】#追加寫(xiě),文件光標(biāo)位置處,默認(rèn)在開(kāi)始位置

w+ :寫(xiě)讀【可讀,可寫(xiě)】#清除覆蓋原有內(nèi)容,默認(rèn)光標(biāo)位置在開(kāi)始,用seek讀

a+ :寫(xiě)讀【可讀,可寫(xiě)】#不清空在最后位置追加,用seek讀。

x :只寫(xiě)模式【不可讀】#不存在則創(chuàng)建,存在則報(bào)錯(cuò)

x+ :寫(xiě)讀【可讀,可寫(xiě)】

"U" :表示在讀取時(shí),將 r n rn自動(dòng)轉(zhuǎn)換成 n (與r或r+模式同使用)

   rU     r+U

操作文件方法

import sys #系統(tǒng)函數(shù)

print(f.tell()) #返回光標(biāo)位置

f.read() #從光標(biāo)初讀取所有內(nèi)容,并移動(dòng)到末尾返回空字符串即空行

f.read(3) #文本模式讀三個(gè)字符,b模式讀取3個(gè)字節(jié)

f.readline() #讀取一行內(nèi)容,光標(biāo)移動(dòng)到第二行首部

f.readlines() #讀取所有行內(nèi)容,存放于列表中,在循環(huán)迭代時(shí)獲取

f.xreadlines() #可用于逐行讀取文件,非全部

f.readinto() #讀取到緩沖區(qū),不要用,將被遺棄

f.seek(0) #指定文件中指針位置,0代表開(kāi)始位置,不同于read。

f.seek(3,2) #從第三個(gè)字節(jié)開(kāi)始打印,seek應(yīng)用,如斷點(diǎn)續(xù)傳

f.tell() #獲取當(dāng)前指針位置

f.truncate() #截?cái)辔募A糁付ㄖ暗臄?shù)據(jù)。
注意:文件的打開(kāi)方式必須可寫(xiě),不能用w或w+等方式打開(kāi),因?yàn)槟菢又苯忧蹇瘴募耍詔runcate要在r+或a或a+等模式下測(cè)試效果.

f.write(“xx”) #文本模式寫(xiě)入緩存,b模式需要加.encode("utf-8")

f.flush() #立刻從內(nèi)存刷到磁盤(pán)中及屏幕上

f.time.sleep(100)#100秒后寫(xiě)入磁盤(pán)

f.close() #寫(xiě)入磁盤(pán)或程序結(jié)束后寫(xiě)入磁盤(pán)

f.stdout.write(“xx”) #向屏幕輸出內(nèi)容,代表文件寫(xiě)、輸出,先進(jìn)了緩存

f.write("1111n222n") #針對(duì)文本模式的寫(xiě),需要自己寫(xiě)換行符

f.write("1111n222n".encode("utf-8")) #針對(duì)b模式的寫(xiě),需要自己寫(xiě)換行符

f.writelines(["333n","444n"]) #文件模式,字符串寫(xiě)入文件

f.writelines([bytes("333n",encoding="utf8"),"444n".encode("utf-8")]) #b模式

f.readable() #文件是否可讀

f.writable() #文件是否可寫(xiě)

f.close() #關(guān)閉文件

f.closed #文件是否關(guān)閉

f.encoding #如果文件打開(kāi)模式為b,否則沒(méi)有該屬性

f.fileno() #文件描述符

f.isatty() #判斷文件是否是同意tty設(shè)備

f.next() #獲取下一行數(shù)據(jù),不存在時(shí)報(bào)錯(cuò)

練習(xí):

打印一首詩(shī)
f 讀取一行,執(zhí)行完后被回收,優(yōu)化內(nèi)存

利用b模式,編寫(xiě)一個(gè)cp工具,要求如下:

  1. 既可以拷貝文本又可以拷貝視頻,圖片等文件
  2. 用戶一旦參數(shù)錯(cuò)誤,打印命令的正確使用方法,如usage:cp source_file target_file

請(qǐng)輸入代碼

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/41956.html

相關(guān)文章

  • ??Python【文件操作】保姆式教程??,計(jì)算機(jī)那么多文件,你繞不過(guò)這一關(guān)的!

    ?前言 在Python寫(xiě)代碼做項(xiàng)目時(shí),我們往往需要對(duì)多個(gè)文件進(jìn)行操作,在現(xiàn)在的源代碼文件中怎么導(dǎo)入其他文件?怎么對(duì)其他文件進(jìn)行操作?這都是經(jīng)常要面臨的問(wèn)題,尤其是爬蟲(chóng),爬到的數(shù)據(jù)放在哪里?用到的時(shí)候怎么調(diào)出來(lái)? 這就涉及到了Python的文件操作知識(shí)了,我們不可能永遠(yuǎn)都只會(huì)在一個(gè)源文件上做所有的操作,這也是必須掌握的一個(gè)知識(shí)板塊。 與此同時(shí),我的Python新手入門(mén)教程系列文章也已經(jīng)快更新完了,歡...

    forsigner 評(píng)論0 收藏0
  • UCloud MySQL云數(shù)據(jù)庫(kù)操作指南

    摘要:二進(jìn)制日志是記錄對(duì)數(shù)據(jù)發(fā)生或潛在發(fā)生更改的語(yǔ)句,并以二進(jìn)制的形式保存。刪除配置文件刪除配置文件配置文件支持刪除操作。在配置文件列表頁(yè)選中需要?jiǎng)h除的配置文件,選中刪除即可完成刪除操作。UCloud MySQL云數(shù)據(jù)庫(kù)操作指南 基本操作 啟動(dòng)MySQL實(shí)例 如果要啟動(dòng)處于關(guān)閉狀態(tài)的MySQL實(shí)例,首先選擇需要啟動(dòng)的MySQL實(shí)例,在列表右側(cè)點(diǎn)擊啟動(dòng)按鈕,彈出的確認(rèn)對(duì)話框選擇確定...

    raoyi 評(píng)論0 收藏0
  • python開(kāi)發(fā)第三篇--文件的基本操作和初識(shí)函數(shù)

    摘要:文件的基本操作編碼不同編碼之間的二進(jìn)制是不能互相識(shí)別的。返回值有幾種情況分別是沒(méi)有返回值返回一個(gè)值返回多個(gè)值。函數(shù)定義計(jì)算的長(zhǎng)度函數(shù)調(diào)用因?yàn)闆](méi)有返回值,此時(shí)的為只寫(xiě),后面不寫(xiě)其他內(nèi)容,也會(huì)返回,但是遇到會(huì)終止整個(gè)函數(shù)。 文件的基本操作 編碼 1.不同編碼之間的二進(jìn)制是不能互相識(shí)別的。2.對(duì)于文件的存儲(chǔ),及傳輸 不能是unicode的編碼。 bytes:內(nèi)部編碼格式(非unicode) ...

    魏明 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<