Python开发中收集的一些常用功能Demo
文章目錄
- 目錄:
- 前言:
- 1、Python判斷文件是否存在的幾種方法:
- 1.1、使用os模塊
- 1.2、使用Try語句(比較嚴(yán)謹(jǐn)?shù)膶懛?#xff09;
- 1.3、使用pathlib模塊
- 2、Python中寫入List到文本中并換行的方法
- 3、Python按行讀取文件的幾種簡單實(shí)現(xiàn)方法
- 3.1、readline()
- 3.2、fileinput
- 3.3、readlines()
- 3.4、文件迭代器
- 4、Python在一個(gè)文件中追加文件內(nèi)容
- 5、Python去掉字符串中空格的幾種方法
- 6、Python實(shí)現(xiàn)定時(shí)任務(wù)
- 7、python 刪除非空文件夾
目錄:
前言:
雖然之前自學(xué)了些Python基礎(chǔ),但是一段時(shí)間沒用再加上學(xué)的時(shí)間也比較短,搞的現(xiàn)在重拾Python寫代碼的時(shí)候,總要去查一些API(還是Coding不夠,仍需多加實(shí)踐),但整個(gè)過程又比較耗時(shí)。所以就準(zhǔn)備把之前以及以后遇到的一些常用的功能Demo給記錄下來,方便自己后來查看。此文章會(huì)不定時(shí)一直更新。
1、Python判斷文件是否存在的幾種方法:
通常在讀寫文件之前,需要判斷文件或目錄是否存在,不然某些處理方法可能會(huì)使程序出錯(cuò)。所以最好在做任何操作之前,先判斷文件是否存在。
這里將介紹三種判斷文件或文件夾是否存在的方法,分別使用os模塊、Try語句、pathlib模塊
1.1、使用os模塊
os模塊中的os.path.exists()方法用于檢驗(yàn)文件是否存在。
- 判斷文件或文件夾是否存在
其實(shí)這種方法還是有個(gè)問題,假設(shè)你想檢查文件“test_data”是否存在,但是當(dāng)前路徑下有個(gè)叫“test_data”的文件夾,這樣就可能出現(xiàn)誤判。為了避免這樣的情況,可以這樣:
- 只檢查文件
通過這個(gè)方法,如果文件”test-data”不存在將返回False,反之返回True。
即是文件存在,你可能還需要判斷文件是否可進(jìn)行讀寫操作。
1.2、使用Try語句(比較嚴(yán)謹(jǐn)?shù)膶懛?#xff09;
可以在程序中直接使用open()方法來檢查文件是否存在和可讀寫。
語法:
open()
如果你open的文件不存在,程序會(huì)拋出錯(cuò)誤,使用try語句來捕獲這個(gè)錯(cuò)誤。
程序無法訪問文件,可能有很多原因:
如果你open的文件不存在,將拋出一個(gè)FileNotFoundError的異常;
文件存在,但是沒有權(quán)限訪問,會(huì)拋出一個(gè)PersmissionError的異常。
其實(shí)沒有必要去這么細(xì)致的處理每個(gè)異常,上面的這兩個(gè)異常都是IOError的子類。所以可以將程序簡化一下:
使用try語句進(jìn)行判斷,處理所有異常非常簡單和優(yōu)雅的。而且相比其他不需要引入其他外部模塊。
1.3、使用pathlib模塊
pathlib模塊在Python3版本中是內(nèi)建模塊,但是在Python2中是需要單獨(dú)安裝三方模塊。
使用pathlib需要先使用文件路徑來創(chuàng)建path對象。此路徑可以是文件名或目錄路徑。
- 檢查路徑是否存在
- 檢查路徑是否是文件
2、Python中寫入List到文本中并換行的方法
f.writelines(lists) 是不換行的寫入,可用以下方法在寫入時(shí)換行。
方法一:
for line in lists:f.write(line+'\n')方法二:
lists=[line+"\n" for line in lists] f.writelines(lists)方法三:
f.write('\n'.join(lists))3、Python按行讀取文件的幾種簡單實(shí)現(xiàn)方法
3.1、readline()
file = open("sample.txt") while 1:line = file.readline()if not line:breakpass # do something file.close()一行一行得從文件讀數(shù)據(jù),顯然比較慢;不過很省內(nèi)存;測試讀10M的sample.txt文件,每秒大約讀32000行;
3.2、fileinput
import fileinput for line in fileinput.input("sample.txt"):pass寫法簡單一些,不過測試以后發(fā)現(xiàn)每秒只能讀13000行數(shù)據(jù),效率比上一種方法慢了兩倍多;
3.3、readlines()
file = open("sample.txt") while 1:lines = file.readlines(100000)if not lines:breakfor line in lines:pass # do something file.close()用同樣的數(shù)據(jù)測試,它每秒可以讀96900行數(shù)據(jù)!效率是第一種方法的3倍,第二種方法的7倍!
3.4、文件迭代器
每次只讀取和顯示一行,讀取大文件時(shí)應(yīng)該這樣:
file = open("sample.txt") for line in file:pass # do something file.close()4、Python在一個(gè)文件中追加文件內(nèi)容
剛開始用的如下的write()方法,發(fā)下會(huì)先把原文件的內(nèi)容清空再寫入新的東西,文件里面每次都是最新生成的一個(gè)賬號(hào)
mobile = Method.createPhone() file = r'D:\test.txt' with open(file, 'w+') as f:f.write(mobile)查了資料,關(guān)于open()的mode參數(shù)(對于open方法來說本身就可以創(chuàng)建一個(gè)文件不需要重新new一個(gè)對象):
'r':讀'w':寫'a':追加'r+' == r+w(可讀可寫,文件若不存在就報(bào)錯(cuò)(IOError))'w+' == w+r(可讀可寫,文件若不存在就創(chuàng)建)'a+' ==a+r(可追加可寫,文件若不存在就創(chuàng)建)對應(yīng)的,如果是二進(jìn)制文件,就都加一個(gè)b就好啦:'rb' 'wb' 'ab' 'rb+' 'wb+' 'ab+'發(fā)現(xiàn)方法用錯(cuò)了,像這種不斷生成新賬號(hào) 增加寫入的,應(yīng)該用追加‘a(chǎn)’
改為如下后,解決:
5、Python去掉字符串中空格的幾種方法
6、Python實(shí)現(xiàn)定時(shí)任務(wù)
threading的Timer:
threading模塊中的Timer能夠幫助實(shí)現(xiàn)定時(shí)任務(wù),而且是非阻塞的。
比如每3秒打印一次helloworld:
7、python 刪除非空文件夾
一般刪除文件時(shí)使用os庫,然后利用os.remove(path)即可完成刪除,如果刪除空文件夾則可使用os.removedirs(path)即可,
但是如果需要?jiǎng)h除整個(gè)文件夾,且文件夾非空時(shí)使用os.removedirs(path)就會(huì)報(bào)錯(cuò)了,此時(shí)可以使用shutil庫,該庫為python內(nèi)置庫,是一個(gè)對文件及文件夾高級操作的庫,可以與os庫互補(bǔ)完成一些操作,如文件夾的整體復(fù)制,移動(dòng)文件夾,對文件重命名等
參考:
http://www.spiderpy.cn/blog/detail/28
https://www.cnblogs.com/SheilaSun/p/4380933.html
https://www.cnblogs.com/feiyueNotes/p/7897064.html
https://www.cnblogs.com/zywscq/p/5325604.html
https://blog.csdn.net/xiaodongxiexie/article/details/77155864
總結(jié)
以上是生活随笔為你收集整理的Python开发中收集的一些常用功能Demo的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android小米 市场下载地址,小米手
- 下一篇: 元类被称为 Python 中的“深奥的巫