天天看點

筆記:Python學習筆記

一、枚舉的文法

from enum import Enum, unique


@unique
class Gender(Enum):
    Male = 0
    Female = 1
           

二、inspect  Python中的反射

inspect子產品用于收集python對象的資訊,可以擷取類或函數的參數的資訊,源碼,解析堆棧,對對象進行類型檢查等等

三、占位符pass

Python pass是空語句,是為了保持程式結構的完整性。

pass 不做任何事情,一般用做占位語句。

四、屬性的文法

class Student(object):
    @property
    def score(self):
        return self._score

    @score.setter
    def score(self, value):
        if not isinstance(value, int):
            raise ValueError("score must be an integer!")
        if value < 0 or value > 100:
            raise ValueError("score must between 0~100")
        self._score = value

    def birth(self):
        return 200-self._score


if __name__ == '__main__':
    s = Student()
    s.score = 60
    print(s.score)
    print(s.birth())
           

五、字元串格式化

"Process child process %s (%s)..." % (name, os.getpid())
           

六、檔案和檔案夾操作

得到目前工作目錄,即目前Python腳本工作的目錄路徑: os.getcwd()

傳回指定目錄下的所有檔案和目錄名:os.listdir()

函數用來删除一個檔案:os.remove()

删除多個目錄:os.removedirs(r“c:\python”)

檢驗給出的路徑是否是一個檔案:os.path.isfile()

檢驗給出的路徑是否是一個目錄:os.path.isdir()

判斷是否是絕對路徑:os.path.isabs()

檢驗給出的路徑是否真地存:os.path.exists()

傳回一個路徑的目錄名和檔案名:os.path.split()     eg os.path.split('/home/swaroop/byte/code/poem.txt') 結果:('/home/swaroop/byte/code', 'poem.txt') 

分離擴充名:os.path.splitext()

擷取路徑名:os.path.dirname()

擷取檔案名:os.path.basename()

運作shell指令: os.system()

讀取和設定環境變量:os.getenv() 與os.putenv()

給出目前平台使用的行終止符:os.linesep    Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'

訓示你正在使用的平台:os.name       對于Windows,它是'nt',而對于Linux/Unix使用者,它是'posix'

重命名:os.rename(old, new)

建立多級目錄:os.makedirs(r“c:\python\test”)

建立單個目錄:os.mkdir(“test”)

擷取檔案屬性:os.stat(file)

修改檔案權限與時間戳:os.chmod(file)

終止目前程序:os.exit()

擷取檔案大小:os.path.getsize(filename)

檔案操作:

os.mknod("test.txt")        建立空檔案

fp = open("test.txt",w)     直接打開一個檔案,如果檔案不存在則建立檔案

關于open 模式:

w     以寫方式打開,

a     以追加模式打開 (從 EOF 開始, 必要時建立新檔案)

r+     以讀寫模式打開

w+     以讀寫模式打開 (參見 w )

a+     以讀寫模式打開 (參見 a )

rb     以二進制讀模式打開

wb     以二進制寫模式打開 (參見 w )

ab     以二進制追加模式打開 (參見 a )

rb+    以二進制讀寫模式打開 (參見 r+ )

wb+    以二進制讀寫模式打開 (參見 w+ )

ab+    以二進制讀寫模式打開 (參見 a+ )

fp.read([size])                     #size為讀取的長度,以byte為機關

fp.readline([size])                 #讀一行,如果定義了size,有可能傳回的隻是一行的一部分

fp.readlines([size])                #把檔案每一行作為一個list的一個成員,并傳回這個list。其實它的内部是通過循環調用readline()來實作的。如果提供size參數,size是表示讀取内容的總長,也就是說可能隻讀到檔案的一部分。

fp.write(str)                      #把str寫到檔案中,write()并不會在str後加上一個換行符

fp.writelines(seq)            #把seq的内容全部寫到檔案中(多行一次性寫入)。這個函數也隻是忠實地寫入,不會在每行後面加上任何東西。

fp.close()                        #關閉檔案。python會在一個檔案不用後自動關閉檔案,不過這一功能沒有保證,最好還是養成自己關閉的習慣。  如果一個檔案在關閉後還對其進行操作會産生ValueError

fp.flush()                                      #把緩沖區的内容寫入硬碟

fp.fileno()                                      #傳回一個長整型的”檔案标簽“

fp.isatty()                                      #檔案是否是一個終端裝置檔案(unix系統中的)

fp.tell()                                         #傳回檔案操作标記的目前位置,以檔案的開頭為原點

fp.next()                                       #傳回下一行,并将檔案操作标記位移到下一行。把一個file用于for … in file這樣的語句時,就是調用next()函數來實作周遊的。

fp.seek(offset[,whence])              #将檔案打操作标記移到offset的位置。這個offset一般是相對于檔案的開頭來計算的,一般為正數。但如果提供了whence參數就不一定了,whence可以為0表示從頭開始計算,1表示以目前位置為原點計算。2表示以檔案末尾為原點進行計算。需要注意,如果檔案以a或a+的模式打開,每次進行寫操作時,檔案操作标記會自動傳回到檔案末尾。

fp.truncate([size])                       #把檔案裁成規定的大小,預設的是裁到目前檔案操作标記的位置。如果size比檔案的大小還要大,依據系統的不同可能是不改變檔案,也可能是用0把檔案補到相應的大小,也可能是以一些随機的内容加上去。

目錄操作:

os.mkdir("file")                   建立目錄

複制檔案:

shutil.copyfile("oldfile","newfile")       oldfile和newfile都隻能是檔案

shutil.copy("oldfile","newfile")            oldfile隻能是檔案夾,newfile可以是檔案,也可以是目标目錄

複制檔案夾:

shutil.copytree("olddir","newdir")        olddir和newdir都隻能是目錄,且newdir必須不存在

重命名檔案(目錄)

os.rename("oldname","newname")       檔案或目錄都是使用這條指令

移動檔案(目錄)

shutil.move("oldpos","newpos")   

删除檔案

os.remove("file")

删除目錄

os.rmdir("dir")隻能删除空目錄

shutil.rmtree("dir")    空目錄、有内容的目錄都可以删

轉換目錄

os.chdir("path")   換路徑

七、時間的文法

1.先導入庫:import datetime

2.擷取目前日期和時間:now_time = datetime.datetime.now()

3.格式化成我們想要的日期:strftime()

比如:“2016-09-21”:datetime.datetime.now().strftime('%Y-%m-%d')

4.在目前時間增加1小時:add_hour=datetime.datetime.now()+datetime.timedelta(hours=1)   #需要導入timedelta庫

格式“小時”:now_hour=add_hour.strftime('%H')

5.時間的三種存在方式:時間對象,時間字元串,時間戳。

(1)字元串轉datetime:

>>> string = '2014-01-08 11:59:58'

>>> time1 = datetime.datetime.strptime(string,'%Y-%m-%d %H:%M:%S')

>>> print time1

2014-01-08 11:59:58

(2)datetime轉字元串:

>>> time1_str = datetime.datetime.strftime(time1,'%Y-%m-%d %H:%M:%S')

>>> time1_str

'2014-01-08 11:59:58'

(3)時間戳轉時間對象:

>>>time1 = time.localtime()

>>>time1_str = datetime.datetime.fromtimestamp(time1)

八、PyCharm快捷鍵大全

PyCharm3.0預設快捷鍵(翻譯的)

PyCharm Default Keymap

1、編輯(Editing)

Ctrl + Space    基本的代碼完成(類、方法、屬性)

Ctrl + Alt + Space  快速導入任意類

Ctrl + Shift + Enter    語句完成

Ctrl + P    參數資訊(在方法中調用參數)

Ctrl + Q    快速檢視文檔

F1   外部文檔

Shift + F1    外部文檔,進入web文檔首頁

Ctrl + Shift + Z --> Redo 重做

Ctrl + 懸浮/單擊滑鼠左鍵    簡介/進入代碼定義

Ctrl + F1    顯示錯誤描述或警告資訊

Alt + Insert    自動生成代碼

Ctrl + O    重新方法

Ctrl + Alt + T    選中

Ctrl + /    行注釋/取消行注釋

Ctrl + Shift + /    塊注釋

Ctrl + W    選中增加的代碼塊

Ctrl + Shift + W    回到之前狀态

Ctrl + Shift + ]/[     標明代碼塊結束、開始

Alt + Enter    快速修正

Ctrl + Alt + L     代碼格式化

Ctrl + Alt + O    優化導入

Ctrl + Alt + I    自動縮進

Tab / Shift + Tab  縮進、不縮進目前行

Ctrl+X/Shift+Delete    剪切目前行或標明的代碼塊到剪貼闆

Ctrl+C/Ctrl+Insert    複制目前行或標明的代碼塊到剪貼闆

Ctrl+V/Shift+Insert    從剪貼闆粘貼

Ctrl + Shift + V    從最近的緩沖區粘貼

Ctrl + D  複制標明的區域或行

Ctrl + Y    删除標明的行

Ctrl + Shift + J  添加智能線

Ctrl + Enter   智能線切割

Shift + Enter    另起一行

Ctrl + Shift + U  在標明的區域或代碼塊間切換

Ctrl + Delete   删除到字元結束

Ctrl + Backspace   删除到字元開始

Ctrl + Numpad+/-   展開/折疊代碼塊(目前位置的:函數,注釋等)

Ctrl + shift + Numpad+/-   展開/折疊所有代碼塊

Ctrl + F4   關閉運作的頁籤

 2、查找/替換(Search/Replace)

F3   下一個

Shift + F3   前一個

Ctrl + R   替換

Ctrl + Shift + F  或者連續2次敲擊shift   全局查找{可以在整個項目中查找某個字元串什麼的,如查找某個函數名字元串看之前是怎麼使用這個函數的}

Ctrl + Shift + R   全局替換

 3、運作(Running)

Alt + Shift + F10   運作模式配置

Alt + Shift + F9    調試模式配置

Shift + F10    運作

Shift + F9   調試

Ctrl + Shift + F10   運作編輯器配置

Ctrl + Alt + R   運作manage.py任務

 4、調試(Debugging)

F8   跳過

F7   進入

Shift + F8   退出

Alt + F9    運作遊标

Alt + F8    驗證表達式

Ctrl + Alt + F8   快速驗證表達式

F9    恢複程式

Ctrl + F8   斷點開關

Ctrl + Shift + F8   檢視斷點

 5、導航(Navigation)

Ctrl + N    跳轉到類

Ctrl + Shift + N    跳轉到符号

Alt + Right/Left    跳轉到下一個、前一個編輯的頁籤(代碼檔案)

Alt + Up/Down跳轉到上一個、下一個方法

F12    回到先前的工具視窗

Esc    從工具視窗回到編輯視窗

Shift + Esc   隐藏運作的、最近運作的視窗

Ctrl + Shift + F4   關閉主動運作的頁籤

Ctrl + G    檢視目前行号、字元号

Ctrl + E   目前檔案彈出,打開最近使用的檔案清單

Ctrl+Alt+Left/Right   後退、前進

Ctrl+Shift+Backspace    導航到最近編輯區域 {差不多就是傳回上次編輯的位置}

Alt + F1   查找目前檔案或辨別

Ctrl+B / Ctrl+Click    跳轉到聲明

Ctrl + Alt + B    跳轉到實作

Ctrl + Shift + I檢視快速定義

Ctrl + Shift + B跳轉到類型聲明

Ctrl + U跳轉到父方法、父類

Ctrl + ]/[跳轉到代碼塊結束、開始

Ctrl + F12彈出檔案結構

Ctrl + H類型層次結構

Ctrl + Shift + H方法層次結構

Ctrl + Alt + H調用層次結構

F2 / Shift + F2下一條、前一條高亮的錯誤

F4 / Ctrl + Enter編輯資源、檢視資源

Alt + Home顯示導覽列F11書簽開關

Ctrl + Shift + F11書簽助記開關

Ctrl + #[0-9]跳轉到辨別的書簽

Shift + F11顯示書簽

 6、搜尋相關(Usage Search)

Alt + F7/Ctrl + F7檔案中查詢用法

Ctrl + Shift + F7檔案中用法高亮顯示

Ctrl + Alt + F7顯示用法

 7、重構(Refactoring)

F5複制F6剪切

Alt + Delete安全删除

Shift + F6重命名

Ctrl + F6更改簽名

Ctrl + Alt + N内聯

Ctrl + Alt + M提取方法

Ctrl + Alt + V提取屬性

Ctrl + Alt + F提取字段

Ctrl + Alt + C提取常量

Ctrl + Alt + P提取參數

 8、控制VCS/Local History

Ctrl + K送出項目

Ctrl + T更新項目

Alt + Shift + C檢視最近的變化

Alt + BackQuote(’)VCS快速彈出

 9、模版(Live Templates)

Ctrl + Alt + J目前行使用模版

Ctrl +J插入模版

 10、基本(General)

Alt + #[0-9]打開相應的工具視窗

Ctrl + Alt + Y同步

Ctrl + Shift + F12最大化編輯開關

Alt + Shift + F添加到最喜歡

Alt + Shift + I根據配置檢查目前檔案

Ctrl + BackQuote(’)快速切換目前計劃

Ctrl + Alt + S 打開設定頁

Ctrl + Shift + A查找編輯器裡所有的動作

Ctrl + Tab在視窗間進行切換 

九、