python 文件I/O
- 輸出
print '內容'
- 輸入
1、raw_input()
//從標準輸入讀取一個行,并返回一個字符串(去掉結尾的換行符),若輸入為python表達式,則會返回表達式原式而不是運算結果。
s=raw_input('Enter a number:')
2、input()
// input 可以接收一個Python表達式作為輸入,并將運算結果返回。
s=input('Enter something:')
- 打開文件
file object = open(file_name [, access_mode][, buffering])
file_name:file_name變量是一個包含了你要訪問的文件名稱的字符串值。
access_mode:access_mode決定了打開文件的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個參數是非強制的,默認文件訪問模式為只讀(r)。
buffering:如果buffering的值被設為0,就不會有寄存。如果buffering的值取1,訪問文件時會寄存行。如果將buffering的值設為大于1的整數,表明了這就是寄存區的緩沖大小。如果取負值,寄存區的緩沖大小則為系統默認。
- file 對象屬性
- file 對象方法
1、close()
// File 對象的 close()方法刷新緩沖區里任何還沒寫入的信息,并關閉該文件,這之后便不能再進行寫入;當一個文件對象的引用被重新指定給另一個文件時,Python 會關閉之前的文件。用 close()方法關閉文件是一個很好的習慣。
文件名.close()
2、write()
//可將任何字符串寫入一個打開的文件。需要重點注意的是,Python字符串可以是二進制數據,而不是僅僅是文字;write()方法不會在字符串的結尾添加換行符('\n')。
fo=open('文件名','w')
fo.write(需寫入的字符串)
fo.close()
3、read()
//從一個打開的文件中讀取一個字符串。需要重點注意的是,Python字符串可以是二進制數據,而不是僅僅是文字。在這里,被傳遞的參數是要從已打開文件中讀取的字節計數。該方法從文件的開頭開始讀入,如果沒有傳入count,它會嘗試盡可能多地讀取更多的內容,很可能是直到文件的末尾。
文件名.read([需要讀取的字節數])
- 文件定位
// tell()方法告訴你文件內的當前位置, 換句話說,下一次的讀寫會發生在文件開頭這么多字節之后。
seek(offset [,from])方法改變當前文件的位置。Offset變量表示要移動的字節數。From變量指定開始移動字節的參考位置。
如果from被設為0,這意味著將文件的開頭作為移動字節的參考位置。如果設為1,則使用當前的位置作為參考位置。如果它被設為2,那么該文件的末尾將作為參考位置。
文件名.tell():告訴文件內的當前位置
文件名.seek(要移動的字節數,開始移動字節的參考位置)
- 重命名和刪除文件
1、rename()
import os
os.rename(當前文件名,新文件名)
2、remove(文件名)
import os
os.ramove(文件名)
- python里的目錄
1、mkdir()
//可以使用os模塊的mkdir()方法在當前目錄下創建新的目錄們。
import os
os.mkdir(新目錄名)
2、chdir()
//改變當前的目錄.
import os
os.chdir(想要跳轉到的目錄名)
3、getcwd()
//顯示當前的工作目錄
import os
print os.getcwd()
4、rmdir()
//刪除某個目錄,目錄的完全合規的名稱必須被給出,否則會在當前目錄下搜索該目錄。
import os
os.rmdir(要刪除的目錄名)
- 文件方法
1、file.close():關閉文件,關閉后文件不能再進行讀寫操作;
2、file.flush():刷新文件內部緩沖,直接把內部緩沖區的數據立刻寫入文件,而不是被動的等待輸出緩沖區寫入。
3、file.fileno():返回一個整型的文件描述符,可以用在os模塊的read方法等一些底層操作上。
4、file.isatty():如果文件連接到一個終端設備返回 True,否則返回 False。
5、file.next():返回文件下一行。
6、file.read([size]):從文件讀取指定的字節數,如果未給定或為負則讀取所有。
7、file.readline([size]):讀取整行,包括'\n'字符。
8、file.readlines([sizehint]):讀取所有行并返回列表,若給定的sizehint>0,則表明一次讀取多少行。
9、file.seek[需要偏移的字節[,偏移初始位置]:設置文件當前位置。
10、file.tell():返回文件當前位置。
11、file.truncate([size]):截取文件,截取的字節通過size指定,默認為當前文件位置。
12、file.write(str):將字符串寫入文件,沒有返回值。
13、file.writelines(sequence):向文件寫入一個字符串列表,如果需要換行則自己加入每行的換行符。
python 內置函數
- abs()
返回數字的絕對值 - divmod()
把除數和余數運算結果結合起來,返回一個包含商和余數的元組(a // b, a % b) - input()
input() 和 raw_input() 這兩個函數均能接收字符串 ,但 raw_input() 直接讀取控制臺的輸入(任何類型的輸入它都可以接收)。而對于 input() ,它希望能夠讀取一個合法的 python 表達式,即你輸入字符串的時候必須使用引號將它括起來,否則它會引發一個 SyntaxError 。
除非對 input() 有特別需要,否則一般情況下我們都是推薦使用 raw_input() 來與用戶交互。 - open()
打開一個文件 - staticmethod()
返回函數的靜態方法 - all()
用于判斷給定的可迭代參數 iterable 中的所有元素是否都為 TRUE,如果是返回 True,否則返回 False。元素除了是 0、空、FALSE 外都算 TRUE。空元組、空列表返回值為True。 - enumerate()
將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。 - int()
將一個字符串或數字轉換為整型。 - ord()
chr() 函數(對于8位的ASCII字符串)或 unichr() 函數(對于Unicode對象)的配對函數,它以一個字符(長度為1的字符串)作為參數,返回對應的 ASCII 數值,或者 Unicode 數值,如果所給的 Unicode 字符超出了你的 Python 定義范圍,則會引發一個 TypeError 的異常。 - str()
將對象轉化為適于人閱讀的形式。 - any()
判斷給定的可迭代參數 iterable 是否全部為 False,則返回 False,如果有一個為 True,則返回 True。元素除了是 0、空、FALSE 外都算 TRUE。空元組、空列表返回值為False。 - eval()
用來執行一個字符串表達式,并返回表達式的值.
//eval 方法能使字符串本身的引號去掉,保留字符的原本屬性。 - isinstance()
判斷一個對象是否是一個已知的類型,類似 type()。
// isinstance() 與 type() 區別:
type() 不會認為子類是一種父類類型,不考慮繼承關系。
isinstance() 會認為子類是一種父類類型,考慮繼承關系。
如果要判斷兩個類型是否相同推薦使用 isinstance()。 - pow()
返回 x^y(x的y次方) 的值。
對于內置pow():pow(x,y[,z])
對于math模塊:pow(x,y)
函數是計算x的y次方,如果z在存在,則再對結果進行取模,其結果等效于pow(x,y) %z;
pow() 通過內置的方法直接調用,內置方法會把參數作為整型,而 math 模塊則會把參數轉換為 float。
pow(x,y)==x**y
pow(x,y[,z])==x**y%z
- sum()
對系列進行求和計算。
sum(iterable[,start])
iterable:可迭代對象,如:列表、元組、集合。
start:指定相加的參數,如果沒有設置這個值,默認為0。
sum([1,2,3],2)=8
- basestring()
str 和 unicode 的超類(父類),也是抽象類,因此不能被調用和實例化,但可以被用來判斷一個對象是否為 str 或者 unicode 的實例,isinstance(obj, basestring) 等價于 isinstance(obj, (str, unicode))。 - execfile()
執行文件內的內容 - issubclass()
issubclass(class,classinfo)
如果 class 是 classinfo 的子類返回 True,否則返回 False。
- print()
打印輸出 - super()
調用父類的一個方法 - bin()
返回一個整數(int)或者長整數(long int)的二進制形式.
bin(X)
- file()
創建一個file對象 - iter()
生成迭代器 - property()
在新式類中返回屬性值。 - tuple()
將列表轉換為元組
tuple(列表)
//對于字典則會返回由鍵名組成元組,對于元組則會返回本身。
- bool()
將給定參數轉換為布爾類型,如果沒有參數,返回 False。
//bool是int的子類 - filter()
filter(函數名,序列)
filter() 函數用于過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。
該接收兩個參數,第一個為函數,第二個為序列,序列的每個元素作為參數傳遞給函數進行判,然后返回 True 或 False,最后將返回 True 的元素放到新列表中。
- len()
返回對象(字符、列表、元組等)長度或項目個數. - range()
range(開始,結束,間隔數)
//間隔數默認為1,開始位置默認為0,只含兩個參數時,若后面一個參數小于前面一個參數,則返回 [ ]。
創建一個整數列表,一般用在 for 循環中.
- type()
如果你只有第一個參數則返回對象的類型,三個參數返回新的類型對象。
// isinstance() 與 type() 區別:
1、type() 不會認為子類是一種父類類型,不考慮繼承關系。
2、isinstance() 會認為子類是一種父類類型,考慮繼承關系。
如果要判斷兩個類型是否相同推薦使用 isinstance()。 - bytearray()
返回一個新字節數組。這個數組里的元素是可變的,并且每個元素的值范圍: 0 <= x < 256。 - float()
將整數和字符串轉換成浮點數。 - list()
將元組轉化為列表
//元組 ( ) 中的值無法修改,列表 [ ] 中的值可修改。 - raw_input()
用來獲取控制臺的輸入,將所有輸入作為字符串看待;input可以將輸入的表達式進行運算。
//raw_input與input后面括號內若給予字符串,則均需要加上 ' '。 - unichr
返回unicode的字符。
//與之相對應的chr(),則根據所給的字符返回對應的ascii碼(有一定的范圍限制)。 - callable()
檢查一個對象是否是可調用的。如果返回True,object仍然可能調用失敗;但如果返回False,調用對象ojbect絕對不會成功。
//對于函數, 方法, lambda 函式, 類, 以及實現了 call 方法的類實例, 它都返回 True。 -
format()
增強了字符串格式化的功能。基本語法是通過 {} 和 : 來代替以前的 %;format 函數可以接受不限個參數,位置可以不按順序。 - locals()
以字典類型返回當前位置的全部局部變量。對于函數, 方法, lambda 函式, 類, 以及實現了 call 方法的類實例, 它都返回 True。 - reduce()
對參數序列中元素進行累積。函數將一個數據集合(鏈表,元組等)中的所有數據進行下列操作:用傳給 reduce 中的函數 function(有兩個參數)先對集合中的第 1、2 個元素進行操作,得到的結果再與第三個數據用 function 函數運算,最后得到一個結果。
//在 Python3 中,reduce() 函數已經被從全局名字空間里移除了,它現在被放置在 fucntools 模塊里,如果想要使用它,則需要通過引入 functools 模塊來調用 reduce() 函數。 - chr()
用一個范圍在 range(256)內的(就是0~255)整數作參數,返回一個對應的字符。
//chr(i)中的 i 既可以是十進制又可以是十六進制。 - frozenset()
返回一個凍結的集合,凍結后集合不能再添加或刪除任何元素。 - long()
將數字或字符串轉換為一個長整型。
long(x,base=10)
- reload()
重新載入之前載入的模塊。 - vars()
返回對象object的屬性和屬性值的字典對象,如果沒有參數,就打印當前調用位置的屬性和屬性值類似 locals()。 - classmethod修飾符
classmethod 修飾符對應的函數不需要實例化,不需要 self 參數,但第一個參數需要是表示自身類的 cls 參數,可以來調用類的屬性,類的方法,實例化對象等。 - getattr()
返回一個對象屬性值。 - map()
根據提供的函數對指定序列做映射。第一個參數 function 以參數序列中的每一個元素調用 function 函數,返回包含每次 function 函數返回值的新列表。 - repr()
將對象轉化為供解釋器讀取的形式,返回一個對象的 string 格式。 - xrange()
用法與range()類似,只是生成的不是一個數組,而是一個生成器。
list(xrange(10))==range(10)
- cmp()
用于比較2個對象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
cmp(x,y)
//python3中使用的是operator模塊
- globals()
以字典類型返回當前位置的全部全局變量;包括所有導入的變量。 - max()
返回給定參數的最大值,參數可以為序列。 - reverse()
該方法沒有返回值,但是會對列表的元素進行反向排序。 - zip()
用于將可迭代的對象作為參數,將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的對象相同,利用 * 號操作符,可以將元組解壓為列表。 - compile()
將一個字符串編譯為字節代碼;返回表達式執行結果。 - hasattr()
用于判斷對象是否包含對應的屬性;如果對象有該屬性返回 True,否則返回 False。 - memoryview()
返回給定參數的內存查看對象(Momory view)。所謂內存查看對象,是指對支持緩沖區協議的數據進行包裝,在不需要復制對象基礎上允許Python代碼訪問。 - round()
返回浮點數x的四舍五入值。
//python2中是保留值將保留到離上一位更近的一端(四舍六入),如果距離兩端一樣遠,則保留到離0遠的一邊。所以round(0.5)會近似到1,而round(-0.5)會近似到-1。
python3中是如果距離兩邊一樣遠,會保留到偶數的一邊。比如round(0.5)和round(-0.5)都會保留到0,而round(1.5)會保留到2。 - __ import __()
用于動態加載類和函數 。如果一個模塊經常變化就可以使用 __ import __() 來動態載入 - complex()
用于創建一個值為 real + imag * j 的復數或者轉化一個字符串或數為復數。如果第一個參數為字符串,則不需要指定第二個參數。 - hash()
獲取取一個對象(字符串或者數值等)的哈希值。
//函數可以應用于數字、字符串和對象,不能直接應用于 list、set、dictionary。在 hash() 對對象使用時,所得的結果不僅和對象的內容有關,還和對象的 id(),也就是內存地址有關。 - min()
返回給定參數的最小值,參數可以為序列;與max()相對應。比較時,從第一個字符開始,第一個相同,比較第二個,依次類推。 - set()
創建一個無序不重復元素集,可進行關系測試,刪除重復數據,還可以計算交集、差集、并集等。 - delattr()
刪除屬性
delattr(對象,對象屬性)
- help()
查看函數或模塊用途的詳細說明。 - next()
返回迭代器的下一個項目。 - setattr()
設置屬性值,該屬性必須存在。 - dict()
創建一個字典。 - hex()
將10進制整數轉換成16進制,以字符串形式表示。 - slice()
實現切片對象,主要用在切片操作函數里的參數傳遞。 - dir()
不帶參數時,返回當前范圍內的變量、方法和定義的類型列表;帶參數時,返回參數的屬性、方法列表。如果參數包含方法dir(),該方法將被調用。如果參數不包含dir(),該方法將最大限度地收集參數信息。 - id()
獲取對象的內存地址。 - oct()
將一個整數轉換成8進制字符串。 - sorted()
對所有可迭代的對象進行排序操作。
// sort 與 sorted 區別:sort 是應用在 list 上的方法,sorted 可以對所有可迭代的對象進行排序操作。list 的 sort 方法返回的是對已經存在的列表進行操作,而內建函數 sorted 方法返回的是一個新的 list,而不是在原來的基礎上進行的操作。 - exec()
執行儲存在字符串或文件中的Python語句,相比于 eval,exec可以執行更復雜的 Python 代碼。exec 返回值永遠為 None。
//在 Python2 中exec不是函數,而是一個內置語句(statement),但是Python 2中有一個 execfile() 函數。可以理解為 Python 3 把 exec 這個 statement 和 execfile() 函數的功能夠整合到一個新的 exec() 函數中去了。
上一篇:python基礎知識(4)
下一篇:python基礎知識(進階篇--正則表達式)