python筆記--文件操作

兩種方式:

1.使用python對文件操作的方法

2.將命令放在控制臺執(zhí)行(commands模塊等)

這里就介紹python對文件操作的方法吧,第二種方式其實就是針對不同的操作系統(tǒng)维哈,執(zhí)行相應(yīng)的命令啦

文件及文件夾是否存在

1.判斷文件是否存在

os.path.exists(r'C:\1.TXT')

os.path.isfile('d:/assist') ? #既可以判斷文件是否存在,有空判斷是否為文件

2.判斷文件夾是否存在

os.path.exists(r'C:\1\')

os.path.isdir(r'C:\1\')

文件及文件夾的創(chuàng)建

1.創(chuàng)建文件

f = open(new_path_filename, 'w')

f.close()

2.創(chuàng)建文件夾

os.makedirs(path) ? #級聯(lián)創(chuàng)建结耀,如果父目錄不存在的話

os.mkdir(path) ? #父目錄不存在就創(chuàng)建失敗

文件及文件夾的刪除

1砂竖、刪除文件

os.remove(filename)

2.刪除文件夾

①文件夾為空

os.rmdir()

②文件夾非空:python的自帶的方法太麻煩了(級聯(lián)刪除)么介,還是使用控制臺來刪除吧,例如

commands.getstatusoutput("rm -r 目錄")

前輩的:

import shutil

shutil.rmtree()

讀寫文件

1.讀文件丽声。(打開模式見附錄)

① 使用try語句塊來打開文件是一個好習(xí)慣礁蔗,因為文件打開錯誤或者讀取結(jié)束,都應(yīng)該用finally關(guān)閉文件流雁社。

try:

? ? file = open("hello.bin","rb")

? ? file.read() ? ?#read()讀取全部內(nèi)容

? ? file.read(size)

? ? file.readlines() ? ?#以整行的方式讀取全部

finally:

? ? if file:

? ? ? ? file.close()

注意:要讀取非ASCII編碼的文本文件瘦麸,就必須以二進(jìn)制模式打開,再解碼歧胁。比如GBK編碼的文件:

f = open('/Users/michael/gbk.txt','rb')

u = f.read().decode('gbk')

可以使用python的codecs模塊滋饲,將轉(zhuǎn)碼和打開文件放在一起

import codecs

with ?codecs.open('/Users/michael/gbk.txt','r','gbk') as f: ??

? ? f.read() ? ?# u'\u6d4b\u8bd5'

②使用with語句塊來打開文件厉碟。見上面

推薦用with語句塊,因為可以代替復(fù)雜的try-finally語句塊屠缭。同時箍鼓,with語句塊并不是只能對文件對象使用,它的使用條件是這樣的:

1)with后面的方法返回的對象需要有__enter__()呵曹、__exit__(type,value,trace)方法

2)具體可以參考這篇文章

2.寫文件

重要的都在讀文件中寫了款咖,寫文件就是file的write方法啦

with ?open('/Users/michael/test.txt','w') ?as ?f: ??

? ? ? f.write('Hello, world!')

獲取文件和目錄路徑

1.獲取當(dāng)前文件全路徑

__file__ ? #方便嗎

os.path.realpath(".")

os.path.abspath(".")

#F:\www\python\test\open\hello.txt

2.獲取當(dāng)前文件所在目錄的全路徑路徑

os.getcwd()

os.path.split(__file__)[0] ?#好麻煩呀

os.path.dirname(__file__) ?#好麻煩啊

#F:\www\python\test\open

3.獲取當(dāng)前文件所在目錄的上級目錄的全路徑

os.path.abspath(os.path.join(os.getcwd(),"..")) ?#還想繼續(xù)上溯的話,繼續(xù)添加“..”即可

#F:\www\python\test

4.獲取文件的后綴名

os.path.splitext('/path/to/file.txt')

遍歷某個文件夾

1.深度優(yōu)先遍歷

import os

def?Test2(rootDir):

? ? for?lists?in?os.listdir(rootDir):

? ? ? ? path=os.path.join(rootDir,?lists)

? ? ? ? print?path ? ? ? #如果只需要當(dāng)前目錄的文件和文件夾奄喂,那么下面兩行就不需要了

? ? ? ? if?os.path.isdir(path):

? ? ? ? ? ? Test2(path)

2.廣度優(yōu)先遍歷

import ?os

def Test1(rootDir):

? ? list_dirs?=?os.walk(rootDir)

? ? for ?tup ?in ?list_dirs:

? ? ? ? for d in f[1]:

? ? ? ? ? ? ?print os.path.join(root,?d)

? ? ? ?for f in tup[2]:

? ? ? ? ? ? ?printos.path.join(root,?f)

注意os.walk(目錄)返回的是包含三個元素的tuple的生成器铐殃,該tuple=(root,dirs跨新,files)富腊,root代表當(dāng)前目錄,dirs代表當(dāng)前目錄中所有直接子目錄的列表域帐,files代表當(dāng)前中所有直接子文件的列表赘被。

附錄

文件讀寫模式

1、r 打開只讀文件肖揣,該文件必須存在民假。

2、r+ 打開可讀寫的文件龙优,該文件必須存在羊异。

3、w 打開只寫文件彤断,若文件存在則文件長度清為0野舶,即該文件內(nèi)容會消失。若文件不存在則建立該文件瓦糟。

4筒愚、w+ 打開可讀寫文件赴蝇,若文件存在則文件長度清為零鄙才,即該文件內(nèi)容會消失援制。若文件不存在則建立該文件。

5、a 以附加的方式打開只寫文件遍略。若文件不存在,則會建立該文件杏死,如果文件存在厢岂,寫入的數(shù)據(jù)會被加到文件尾,即文件原先的內(nèi)容會被保留楚堤。

6疫蔓、a+ 以附加方式打開可讀寫的文件含懊。若文件不存在,則會建立該文件衅胀,如果文件存在岔乔,寫入的數(shù)據(jù)會被加到文件尾后,即文件原先的內(nèi)容會被保留滚躯。

7雏门、上述的形態(tài)字符串都可以再加一個b字符,如rb掸掏、w+b或ab+等組合茁影,加入b 字符用來告訴函數(shù)庫打開的文件為二進(jìn)制文件,而非純文字文件丧凤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末募闲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子息裸,更是在濱河造成了極大的恐慌蝇更,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呼盆,死亡現(xiàn)場離奇詭異年扩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)访圃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門厨幻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人腿时,你說我怎么就攤上這事况脆。” “怎么了批糟?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵格了,是天一觀的道長。 經(jīng)常有香客問我徽鼎,道長盛末,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任否淤,我火速辦了婚禮悄但,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘石抡。我一直安慰自己檐嚣,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布啰扛。 她就那樣靜靜地躺著嚎京,像睡著了一般嗡贺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鞍帝,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天暑刃,我揣著相機(jī)與錄音,去河邊找鬼膜眠。 笑死岩臣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宵膨。 我是一名探鬼主播架谎,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辟躏!你這毒婦竟也來了谷扣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤捎琐,失蹤者是張志新(化名)和其女友劉穎会涎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瑞凑,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡末秃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了籽御。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片练慕。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖技掏,靈堂內(nèi)的尸體忽然破棺而出铃将,到底是詐尸還是另有隱情,我是刑警寧澤哑梳,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布劲阎,位于F島的核電站,受9級特大地震影響鸠真,放射性物質(zhì)發(fā)生泄漏悯仙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一弧哎、第九天 我趴在偏房一處隱蔽的房頂上張望雁比。 院中可真熱鬧稚虎,春花似錦撤嫩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽茴她。三九已至,卻和暖如春程奠,著一層夾襖步出監(jiān)牢的瞬間丈牢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工瞄沙, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留己沛,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓距境,卻偏偏與公主長得像申尼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子垫桂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

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

  • 1.創(chuàng)建文件夾 !/bin/sh mkdir -m 777 "%%1" 2.創(chuàng)建文件 !/bin/sh touch...
    BigJeffWang閱讀 10,060評論 3 53
  • From: http://www.cnblogs.com/zhoujie/archive/2013/04/10/p...
    pzka158閱讀 1,784評論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理师幕,服務(wù)發(fā)現(xiàn),斷路器诬滩,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程霹粥,因...
    小菜c閱讀 6,424評論 0 17
  • 轉(zhuǎn):http://blog.csdn.net/gexiaobaohelloworld/article/detail...
    奇_66a0閱讀 3,405評論 0 2