日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python开发中收集的一些常用功能Demo

發(fā)布時(shí)間:2023/12/20 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python开发中收集的一些常用功能Demo 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 目錄:
  • 前言:
  • 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)文件是否存在。

  • 判斷文件或文件夾是否存在
import os os.path.exists(test_file.txt) #Trueos.path.exists(no_exist_file.txt) #False

其實(shí)這種方法還是有個(gè)問題,假設(shè)你想檢查文件“test_data”是否存在,但是當(dāng)前路徑下有個(gè)叫“test_data”的文件夾,這樣就可能出現(xiàn)誤判。為了避免這樣的情況,可以這樣:

  • 只檢查文件
import os os.path.isfile("test-data")

通過這個(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:f =open()f.close() except IOError:print "File is not accessible."

使用try語句進(jìn)行判斷,處理所有異常非常簡單和優(yōu)雅的。而且相比其他不需要引入其他外部模塊。

1.3、使用pathlib模塊

pathlib模塊在Python3版本中是內(nèi)建模塊,但是在Python2中是需要單獨(dú)安裝三方模塊。
使用pathlib需要先使用文件路徑來創(chuàng)建path對象。此路徑可以是文件名或目錄路徑。

  • 檢查路徑是否存在
path = pathlib.Path("path/file") path.exist()
  • 檢查路徑是否是文件
path = pathlib.Path("path/file") path.is_file()

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)’
改為如下后,解決:

mobile = Method.createPhone() file = r'D:\test.txt' with open(file, 'a+') as f:f.write(mobile+'\n') #加\n換行顯示

5、Python去掉字符串中空格的幾種方法

  • strip():把頭和尾的空格去掉
  • lstrip():把左邊的空格去掉
  • rstrip():把右邊的空格去掉
  • replace(‘c1’,‘c2’):把字符串里的c1替換成c2。故可以用replace(’ ‘,’’)來去掉字符串里的所有空格
  • split():通過指定分隔符對字符串進(jìn)行切片,如果參數(shù)num 有指定值,則僅分隔 num 個(gè)子字符串
  • In[2]: a=' ddd dfe dfd efre ddd ' In[3]: a Out[3]: ' ddd dfe dfd efre ddd ' In[4]: a.strip() Out[4]: 'ddd dfe dfd efre ddd' In[5]: a.lstrip() Out[5]: 'ddd dfe dfd efre ddd ' In[6]: a.rstrip() Out[6]: ' ddd dfe dfd efre ddd' In[7]: a.replace(' ','') Out[7]: 'ddddfedfdefreddd' In[8]: a.split() Out[8]: ['ddd', 'dfe', 'dfd', 'efre', 'ddd']

    6、Python實(shí)現(xiàn)定時(shí)任務(wù)

    threading的Timer:
    threading模塊中的Timer能夠幫助實(shí)現(xiàn)定時(shí)任務(wù),而且是非阻塞的。
    比如每3秒打印一次helloworld:

    def printHello(): print "Hello World" t = Timer(2, printHello) t.start() if __name__ == "__main__": printHello()

    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)文件夾,對文件重命名等

    import os import shutilos.remove(path) #刪除文件 os.removedirs(path) #刪除空文件夾shutil.rmtree(path) #遞歸刪除文件夾

    參考:
    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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。