Python使用os模塊和fileinput模塊來操作文件目錄
os模塊
在python編程中,我們會(huì)經(jīng)常使用到文件和目錄,這些操作python提供一個(gè)os模塊,里面有很多操作文件和目錄的函數(shù).
下面介紹os的常用功能
1.獲取當(dāng)前路徑
>>> os.getcwd() '/root/python'
2.獲取目錄中的內(nèi)容
>>> os.listdir(os.getcwd()) ['deco.py', '6.py', 'inputfile.py', 'uniFile.py', 'oddnogen.py', 'ospathex.py', 'operate.py', 'bianliang.py', 'typecheck1.py']
3.創(chuàng)建目錄
>>> os.mkdir('/root/pythontest')
一次性創(chuàng)建嵌套目錄可使用os.makedirs,makedirs可以生成多層遞歸目錄,removedirs可以刪除多層遞歸的空目錄,若目錄中有文件則無法刪除;os.system():運(yùn)行shell命令;
>>> os.environ['HOME'] '/root' >>> os.makedirs(os.path.join(os.environ['HOME'],'test','py')) >>> os.system('ls -lR /root/test') /root/test: total 4 drwxr-xr-x 2 root root 4096 2013-03-29 17:27 py /root/test/py: total 0 0
4.改變工作目錄
>>> os.getcwd() '/root/python' >>> os.chdir('/etc') >>> os.getcwd() '/etc'
5.刪除目錄
>>> os.rmdir('/root/pythontest') >>>
注:刪除目錄必須是空目錄
6.刪除文件
>>> os.remove('/root/pytest.py')
7.重命名文件或者目錄
>>> os.rename('/root/pytest.py','/root/test.py')
8.字符串給出當(dāng)前平臺(tái)使用的終止符,例如:Windows使用'\r\n',Linux使用'\n'
>>> os.linesep '\n'
以下是os.path模塊
9.判斷是否是目錄
>>> os.path.isdir('/root/python') True
10.判斷是否為文件
>>> os.path.isfile('/root/python') False
11.返回一個(gè)路徑的目錄名和文件名
>>> os.path.split(os.getcwd()) ('/root', 'python')
12.判斷是否存在文件或目錄name
>>> os.path.exists('/root') True >>> os.path.exists('/root/1.py') False
13.獲得文件大小
>>> os.path.getsize('/root/python/if.py') 282
14.返回文件路徑,返回文件名
>>> os.path.dirname('/root/python/if.py') '/root/python' >>> os.path.basename('/root/python/if.py') 'if.py'
15.連接目錄與文件名或目錄
>>> os.path.join('/dave/test/','1.py') '/dave/test/1.py'
判斷一個(gè)目錄里哪些是文件哪些是目錄.
>>> for file in os.listdir('/root/python'): ... if os.path.isdir(file): ... print file,"is a directory" ... else: ... print file,"is a file" ... deco.py is a file inputfile.py is a file operate.py is a file hello.pyc is a file userpw.py is a file 4.py is a file answer is a directory
fileinput模塊
fileinput模塊可以遍歷文本文件的所有行.它的工作方式和readlines很類似,不同點(diǎn)在于,它不是將全部的行讀到列表中而是創(chuàng)建了一個(gè)xreadlines對(duì)象.
下面是fileinput模塊中的常用函數(shù)
- input() #它會(huì)返回能夠用于for循環(huán)遍歷的對(duì)象.
- filename() #返回當(dāng)前文件的名稱
- lineno() #返回當(dāng)前(累計(jì))的行數(shù)
- filelineno() #返回當(dāng)前文件的行數(shù)
- isfirstline() #檢查當(dāng)前行是否是文件的第一行
- close() #關(guān)閉序列
>>> import fileinput >>> for eachline in fileinput.input("/root/datafile.txt"): ... print eachline ... Dave python >>> for eachline in fileinput.input("/root/datafile.txt"): ... print fileinput.filename() ... /root/datafile.txt /root/datafile.txt >>> for eachline in fileinput.input("/root/datafile.txt"): ... print fileinput.lineno(),eachline ... 1 Dave 2 python >>> for eachline in fileinput.input("/root/datafile.txt"): ... if fileinput.isfirstline(): ... print eachline ... else: ... break ... Dave
下面是一個(gè)關(guān)于日志分析的小實(shí)例,將日志中截取匹配的電話號(hào)碼,如800-333-1212
root@10.1.1.45:~# cat telphone.log 027-987-1212 02187899682 021-110-9632 root@10.1.1.45:~# cat fileinputtest.py #!/usr/bin/python2.5 import fileinput import sys import re pattern = "\d{3}-\d{3}-\d{4}" filePath = "/root/telphone.log" for eachline in fileinput.input(filePath): a = re.search(pattern,eachline) if a: # sys.stdout.write("============\n") # sys.stdout.write(eachline) print "============" print 'line:',fileinput.lineno(),'filename:',fileinput.filename(),'length:',len(eachline.strip('\n')),eachline root@10.1.1.45:~# ./fileinputtest.py ============ line: 1 filename: /root/telphone.log length: 12 027-987-1212 ============ line: 3 filename: /root/telphone.log length: 12 021-110-9632
相關(guān)文章
簡(jiǎn)單了解python的break、continue、pass
這篇文章主要介紹了簡(jiǎn)單了解python的break、continue、pass,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07Python3 使用cookiejar管理cookie的方法
今天小編就為大家分享一篇Python3 使用cookiejar管理cookie的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12python實(shí)現(xiàn)五子棋游戲(pygame版)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)五子棋游戲,pygame版五子棋,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01Python調(diào)用接口合并Excel表代碼實(shí)例
這篇文章主要介紹了Python調(diào)用接口合并Excel表代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03淺談Python peewee 使用經(jīng)驗(yàn)
這篇文章主要介紹了淺談Python peewee 使用經(jīng)驗(yàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10教你用Type Hint提高Python程序開發(fā)效率
本文通過介紹和實(shí)例教大家如何利用Type Hint來提升Python程序開發(fā)效率,對(duì)大家使用python開發(fā)很有幫助,有需要的參考學(xué)習(xí)。2016-08-08淺談Python對(duì)內(nèi)存的使用(深淺拷貝)
這篇文章主要介紹了淺談Python對(duì)內(nèi)存的使用(深淺拷貝),具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python機(jī)器學(xué)習(xí)pytorch模型選擇及欠擬合和過擬合詳解
如何發(fā)現(xiàn)可以泛化的模式是機(jī)器學(xué)習(xí)的根本問題,將模型在訓(xùn)練數(shù)據(jù)上過擬合得比潛在分布中更接近的現(xiàn)象稱為過擬合,用于對(duì)抗過擬合的技術(shù)稱為正則化2021-10-10