Python開發中收集的一些常用功能Demo

文章目錄

  • 目錄:
  • 前言:
  • 1、Python判斷文件是否存在的幾種方法:
    • 1.1、使用os模塊
    • 1.2、使用Try語句(比較嚴謹的寫法)
    • 1.3、使用pathlib模塊
  • 2、Python中寫入List到文本中并換行的方法
  • 3、Python按行讀取文件的幾種簡單實現方法
    • 3.1、readline()
    • 3.2、fileinput
    • 3.3、readlines()
    • 3.4、文件迭代器
  • 4、Python在一個文件中追加文件內容
  • 5、Python去掉字符串中空格的幾種方法
  • 6、Python實現定時任務
  • 7、python 刪除非空文件夾

目錄:

前言:

雖然之前自學了些Python基礎,但是一段時間沒用再加上學的時間也比較短,搞的現在重拾Python寫代碼的時候,總要去查一些API(還是Coding不夠,仍需多加實踐),但整個過程又比較耗時。所以就準備把之前以及以后遇到的一些常用的功能Demo給記錄下來,方便自己后來查看。此文章會不定時一直更新。

1、Python判斷文件是否存在的幾種方法:

通常在讀寫文件之前,需要判斷文件或目錄是否存在,不然某些處理方法可能會使程序出錯。所以最好在做任何操作之前,先判斷文件是否存在。

這里將介紹三種判斷文件或文件夾是否存在的方法,分別使用os模塊、Try語句、pathlib模塊

1.1、使用os模塊

os模塊中的os.path.exists()方法用于檢驗文件是否存在。

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

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

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

通過這個方法,如果文件”test-data”不存在將返回False,反之返回True。
即是文件存在,你可能還需要判斷文件是否可進行讀寫操作。

1.2、使用Try語句(比較嚴謹的寫法)

可以在程序中直接使用open()方法來檢查文件是否存在和可讀寫。
語法:
open()
如果你open的文件不存在,程序會拋出錯誤,使用try語句來捕獲這個錯誤。
程序無法訪問文件,可能有很多原因:
如果你open的文件不存在,將拋出一個FileNotFoundError的異常;
文件存在,但是沒有權限訪問,會拋出一個PersmissionError的異常。
其實沒有必要去這么細致的處理每個異常,上面的這兩個異常都是IOError的子類。所以可以將程序簡化一下:

try:f =open()f.close()
except IOError:print "File is not accessible."

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

1.3、使用pathlib模塊

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

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

2、Python中寫入List到文本中并換行的方法

f.writelines(lists) 是不換行的寫入,可用以下方法在寫入時換行。

方法一:

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按行讀取文件的幾種簡單實現方法

3.1、readline()

file = open("sample.txt") 
while 1:line = file.readline()if not line:breakpass # do something
file.close()

一行一行得從文件讀數據,顯然比較慢;不過很省內存;測試讀10M的sample.txt文件,每秒大約讀32000行;

3.2、fileinput

import fileinput 
for line in fileinput.input("sample.txt"):pass

寫法簡單一些,不過測試以后發現每秒只能讀13000行數據,效率比上一種方法慢了兩倍多;

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()

用同樣的數據測試,它每秒可以讀96900行數據!效率是第一種方法的3倍,第二種方法的7倍!

3.4、文件迭代器

每次只讀取和顯示一行,讀取大文件時應該這樣:

file = open("sample.txt") 
for line in file:pass # do something
file.close()

4、Python在一個文件中追加文件內容

剛開始用的如下的write()方法,發下會先把原文件的內容清空再寫入新的東西,文件里面每次都是最新生成的一個賬號

mobile = Method.createPhone()
file = r'D:\test.txt'
with open(file, 'w+') as f:f.write(mobile)

查了資料,關于open()的mode參數(對于open方法來說本身就可以創建一個文件不需要重新new一個對象):

'r':讀'w':寫'a':追加'r+' == r+w(可讀可寫,文件若不存在就報錯(IOError))'w+' == w+r(可讀可寫,文件若不存在就創建)'a+' ==a+r(可追加可寫,文件若不存在就創建)對應的,如果是二進制文件,就都加一個b就好啦:'rb'  'wb'  'ab'  'rb+'  'wb+'  'ab+'

發現方法用錯了,像這種不斷生成新賬號 增加寫入的,應該用追加‘a’
改為如下后,解決:

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

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

  1. strip():把頭和尾的空格去掉
  2. lstrip():把左邊的空格去掉
  3. rstrip():把右邊的空格去掉
  4. replace(‘c1’,‘c2’):把字符串里的c1替換成c2。故可以用replace(’ ‘,’’)來去掉字符串里的所有空格
  5. split():通過指定分隔符對字符串進行切片,如果參數num 有指定值,則僅分隔 num 個子字符串
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實現定時任務

threading的Timer:
threading模塊中的Timer能夠幫助實現定時任務,而且是非阻塞的。
比如每3秒打印一次helloworld:

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

7、python 刪除非空文件夾

一般刪除文件時使用os庫,然后利用os.remove(path)即可完成刪除,如果刪除空文件夾則可使用os.removedirs(path)即可,
但是如果需要刪除整個文件夾,且文件夾非空時使用os.removedirs(path)就會報錯了,此時可以使用shutil庫,該庫為python內置庫,是一個對文件及文件夾高級操作的庫,可以與os庫互補完成一些操作,如文件夾的整體復制,移動文件夾,對文件重命名等

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456362.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456362.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456362.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unlicensed ARC session – terminating!

問題描述 近日,發現ArcGIS10.4中存在很多bug,而且費了好多時間去測試它,最終決定改用10.1。在降級程序時遇到許可問題。 重裝ArcGIS10.1后,打開工程,所有引用都自動映射,沒報任何錯誤,清理重新生…

SQLAlchemy - Column詳解

SQLAlchemy - Column詳解 Column常用參數: default:默認值 nullable:是否可有 primary_key:是否為主鍵 unique:是否唯一 autoincrement:是否自動增長 onupdate:更新的時候執行的函數 name&…

Linux命令三劍客:grep、sed、awk總結

文章目錄前言一、grep命令語法實例grep結合pattern正則二、sed命令語法案例三、awk命令語法實例前言 最近看到了幾篇關于linux命令grep、sed、awk的文章,這里總結下,方便后面使用。 一、grep grep命令(grep的全稱:Global searc…

python 機器學習資料

!(7 Steps to Mastering Machine Learning With Python) [http://www.kdnuggets.com/2015/11/seven-steps-machine-learning-python.html] 轉載于:https://www.cnblogs.com/zk47/p/6448506.html

Flask-SQLAlchemy 中如何不區分大小寫查詢?

例如下面的 User 模型,在數據庫中查詢時并不會區分大小寫 class User(db.Model):__tablename__ usersid db.Column(db.Integer, primary_keyTrue)username db.Column(db.String(64), uniqueTrue, indexTrue)password_hash db.Column(db.String(128)) 這時&…

Git常用指令及功能總結

文章目錄前言:1、常用的git指令2、常用git功能及操作2.1、下載代碼:2.2、當前分支和master保持一致2.3、修改代碼后提交代碼到指定分支2.4、版本回退(時空穿梭機)2.5、概念工作區和暫存區2.6、添加遠程庫2.7、分支管理2.8、標簽管…

MacOS下MySQL配置

先去官網下載一個 MySQL for mac http://www.cnblogs.com/xiaobo-Linux/ 命令行運行終端,運行下面兩條命令: 12alias mysql/usr/local/mysql/bin/mysqlalias mysqladmin/usr/local/mysql/bin/mysqladmin方便終端直接輸入mysql命令,而不是必須…

HashMap為什么在多線程下會讓cpu100%

首先HashMap并不是sun公司多線程提供的集合,很多時候我們的程序是一個主線程,用了hashmap并沒有什么問題,但是在多線程下會出現問題。 hashmap是一個哈希表,存儲的數據結構也可以是一個線性數組,我們的存儲的數據都在e…

flask中關于endpoint端點、url_map映射、view_func視圖函數,view_functions、及視圖函數名是否何以相同的問題?

視圖函數中關于url_map視圖的映射:應該是[ url->methonds->endpoint ] 而整個請求的過程,是先通過url地址映射到端點endpoint,然后通過endpoint找到試圖函數view_func(擴展:在Flask類里邊有一個view_funtions的屬性&…

SparkSQL-從0到1認識Catalyst

文章目錄前言正文預備知識-Tree&RuleCatalyst工作流程ParserAnalyzerOptimizerSparkSQL執行計劃前言 這篇文章是轉載一位大神的文章,為什么要轉載的,實在是因為寫的太經典了,所以忍不住希望能有更多的人可以看到。后續還會轉…

為什么程序員一定要加班?

摘要: 一提到程序員,大多數人的印象大概就是死宅、無趣、沒有私人生活,除了上班寫寫寫代碼,加班寫代碼更是標配。似乎在深夜頂著雞窩頭,目光呆滯,面無表情敲鍵盤的場景才是一個程序員的真實寫照。 當然&…

javascript 反斜杠\

通常&#xff0c;我們在動態給定一個div的innerHTML時&#xff0c;通常是樣做的&#xff1a; <div id"demo1" /> <SCRIPT> var demo document.getElementById("demo1"); var str "<h1>" "<a hrefjavascript:; ο…

SQLAlchemy 中的 Session、sessionmaker、scoped_session

SQLAlchemy 中的 Session、sessionmaker、scoped_session 目錄 一、關于 Session 1. Session是緩存嗎&#xff1f;2. Session作用&#xff1a;3. Session生命周期&#xff1a;4. Session什么時候創建&#xff0c;提交&#xff0c;關閉&#xff1f;4. 獲取一個Session&#xf…

沒有任何權力的“項目經理”該如何當?

2016.11.25 11:40* 字數 1454 閱讀 108評論 0喜歡 1小王幾月前被任命為項目經理&#xff0c;負責9個人的工作安排。工作上要對上負責&#xff0c;完成項目&#xff0c;可對下小王卻沒有對小組成員的工作考核權&#xff0c;也就是說&#xff0c;不能影響他們的收入。 圖片發自簡…

SparkSQL之Join原理

文章目錄前言&#xff1a;Join背景介紹Join常見分類以及基本實現機制Hash JoinBroadcast Hash JoinShuffle Hash JoinSort-Merge Join總結前言&#xff1a; 寫SQL的時候很多時候都有用到join語句&#xff0c;但是我們真的有仔細想過數據在join的過程到底是怎么樣的嗎&#xff…

SQLAlchemy中filter_by()和filter()的用法不同

filter_by() 和 filter() 的最主要的區別&#xff1a; 模塊語法><&#xff08;大于和小于&#xff09;查詢and_和or_查詢filter_by()直接用屬性名&#xff0c;比較用不支持不支持filter()用類名.屬性名&#xff0c;比較用支持支持 談 filter_by() 的語法之前先看下 filt…

python爬蟲從入門到放棄(六)之 BeautifulSoup庫的使用

上一篇文章的正則&#xff0c;其實對很多人來說用起來是不方便的&#xff0c;加上需要記很多規則&#xff0c;所以用起來不是特別熟練&#xff0c;而這節我們提到的beautifulsoup就是一個非常強大的工具&#xff0c;爬蟲利器。 beautifulSoup “美味的湯&#xff0c;綠色的濃湯…

SparkHiveSQL中Join操作的謂詞下推?

前言&#xff1a; SparkSQL和HiveSQL的Join操作中也有謂詞下推&#xff1f;今天就通過大神的文章來了解下。同樣&#xff0c;如有冒犯&#xff0c;請聯系。 正文 上文簡要介紹了Join在大數據領域中的使用背景以及常用的幾種算法&#xff0d;broadcast hash join 、shuffle h…

【轉載】通過金礦模型介紹動態規劃 (動態規劃入門)

先附上原文地址&#xff1a;http://www.cnblogs.com/sdjl/articles/1274312.html 通過金礦模型介紹動態規劃 對于動態規劃&#xff0c;每個剛接觸的人都需要一段時間來理解&#xff0c;特別是第一次接觸的時候總是想不通為什么這種方法可行&#xff0c;這篇文章就是為了…

flask模型中【外鍵】relationship的使用筆記

模型中relationship的使用筆記 模型.PY class User(db.Model):# __tablename__ user1 #定義表名id db.Column(db.Integer, primary_keyTrue, autoincrementTrue)username db.Column(db.String(10), nullableTrue)password db.Column(db.String(64), nullableTrue)phone …