文件與目錄的操作:
-文件讀寫:python進行文件讀寫的函數是open或file
file_handler =
open(filename,mode)
mode,
模式 | 說明 |
r | 只讀 |
r+ | 讀寫 |
w | 寫入,先刪除原文件,在重新寫入,如果文件沒有則 創建 |
w+ | 讀寫,先刪除原文件,在重新寫入,如果文件沒有則創建(可以寫入輸出) |
讀範例:
>>> fo = open('/tools/123/test.log') #open函數打開文件 >>> fo <open file '/tools/123/test.log', mode 'r' at 0x7fdc0c144d20> #fo對象打開的文件,模式是read >>> fo.read() 'a\n' #查看文件中的數據 >>> fo,close() #關閉文件 >>> fo.read() Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: I/O operation on closed file #再次讀取文件,是關閉狀態 #################################利用file類打開文件################################## >>> f1 = file('/tools/123/test.log') >>> f1.read() 'a\n' >>> f1.close() >>> f1.read() Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: I/O operation on closed file #方法同上
寫範例:
>>> fnew = open('/tools/123/new.test','w') #打開新的文件,注意w的引號,以值得形式傳入 #此處文件new.test已經存在 >>>fo.write('hello \n My name is kong') #寫入數據,注意是在緩衝中,\n 換行 >>> fo.close() #關閉,即可保存數據 >>> fnew=open('/tools/123/new.log','w') #注意w的特性,當它打開文件時,會清空原數據; >>> fnew.write('I am NEW') #再次寫入數據 >>> fnew.close()
使用r+打開文件:(查看後寫入數據)
>>> fnew=open('/tools/123/new.log','r+') >>> fnew.read() #文件可讀 'I am NEW' >>> fnew.write('new contents') >>> fnew.close() #查看文件保留原有數據,且寫入新的數據
(直接寫入數據)
>>> fnew=open('/tools/123/new.log','r+') >>> fnew.write('000 nihao') >>> fnew.close() #查看文件內容
#文件中的數據,當我們去查看的時候,它會從第一個字母打印到最後一個字母,其實它有一個隱形的指針,從第一個字符開始讀取的時候
此處未學習完畢~~~ 注意
OS模塊:
import os
-目錄操作需要調用os模塊
-比如:
>>> import os >>> os.mkdir('/tools/csvt') >>> os.mkdir('test')
多級目錄創建makedirs():
>>> os.makedirs('a/b/c')
刪除目錄rmdir() 、removedirs():
>>> os.rmdir('test') >>> os.rmdir('a') Traceback (most recent call last): File "<stdin>", line 1, in <module> OSError: [Errno 39] Directory not empty: 'a' #提示目錄不爲空 >>> os.removedirs('a/b/c') #注意多級目錄的刪除要寫明目錄列表
顯示當前路徑getcwd():
>>> os.getcwd() '/tools/123'
顯示目錄列表listdir():
>>> os.listdir('.') ['test.log', 'new.log', 'new.test'] #.當前路徑,但是不包含子目錄 >>> os.listdir('/tools/123/') ['test.log', 'new.log', 'new.test']
切換目錄操作chdir:
>>> os.chdir('/usr/local/') >>> os.getcwd() '/usr/local' #注意此切換僅僅是在python 環境中
文件對象操作:
-FileObject.close()
-String = FileObject.readline([size])
-List = FileObject.readlines([size])
-String = FileObject.read([size])
-FileObject.next()
-FileObject.write(string)
-FileObject.writelines(list)
-FileObject.seek(偏移量,選項)
-FileObject.flush()
範例:
>>> for i in open('test.log'): ... print i ... www.csvt.com i am milo hello
#遍歷test.log,依次打印每行,返回迭代變量
readline:
-格式
String=FileObject.readline(【size】)
-說明:
每次讀取文件的一行
size:是指每行每次讀取size個字節,知道行的末尾
範例:
>>> f1 = open('test.log') >>> f1.readline() 'www.csvt.com\n' >>> f1.readline() ' i am milo\n' >>> f1.readline() 'hello\n' >>> f1.readline() ''
#每次讀取一行,直到指正完畢
readlines
>>> f1.close() >>> f1 = open('test.log') >>> f1.readlines()['www.csvt.com\n', ' i am milo\n', 'hello\n']
#把每行的數據作爲列表當中的元素進行返回
next:
-格式:
FileObject.next()
-說明:
.返回當前行,並將文件指針到下一行
範例:
>>> f1.close() >>> f1=open('test.log') >>> f1.next() 'www.csvt.com\n' >>> f1.next() ' i am milo\n' >>> f1.next() 'hello\n' >>> f1.next() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
#效果和readline類似,注意使用readline,超出範圍之後會讀取空字符串,而next,超出範圍之後,會停止迭代
write:
-格式:
.FileObject.write(string)
-說明:
.write和後面的writelines在寫入前會是否清除文件中原來所有的數據,在重新寫入新的內容,取決於打開文件的模式;
範例:
writelines:
-格式:
.FileObject.writelines(List)
-說明:
.多行寫
.效率比write高,速度更快,少量寫入可以使用write
範例:
>>> l = ['one\n','two\n','three\n'] >>> f1 = open('test.log','a') >>> f1.writelines(l) >>> f1.close()
FileObject.seek(偏移量,選項)
-選項=o時,表示將文件指針指向從文件頭部到”偏移量“字節處。
-選項=1時,表示將文件指針指向從文件的當前位置,向後移動”偏移量“字節。
-選項=2時,表示將文件指針指向從文件尾部,指向移動”偏移量“字節。
需要重新學習