產生輸出的最簡單方法是使用print語句,可以通過用逗號分隔零個或多個表示式。這個函式傳遞表示式轉換為一個字串,如下結果寫到標準輸出 -
#!/usr/bin/python3 print ("Python is really a great language,", "isn't it?")
Python is really a great language, isn't it?
Python2中有兩個內建的函式可從標準輸入讀取資料,它預設來自鍵盤。這些函式分別是:input() 和 raw_input()。
但在Python3中,raw_input()函式已被棄用。此外, input() 函式是從鍵盤作為字串讀取資料,不論是否使用引號(''或「」)與否。
input([prompt]) 函式等同 raw_input,不同之處在於它假定輸入是一個有效的Python表示式並計算結果返回給你。
#!/usr/bin/python3 >>> x=input("something:") something:10 >>> x '10' >>> x=input("something:") something:'10' #entered data treated as string with or without '' >>> x "'10'"
到現在為止,已經學習了讀取和寫入標準輸入和輸出。現在,我們學習如何使用檔案實際資料。
Python提供了基本的功能和必要的預設操作檔案的方法。您可以使用一個 file 物件來做大部分的檔案操作。
在讀取或寫入一個檔案之前,你必須使用 Python 內建open()函式來開啟它。 該函式建立一個檔案物件,這將被用來呼叫與它相關的其他支援方式。
file object = open(file_name [, access_mode][, buffering])
file_name: 檔案名(file_name )引數是包含您要存取的檔案名的字串值。
access_mode: access_mode指定該檔案已被開啟,即讀,寫,追加等方式。可能值的完整列表,在表中如下。
buffering: 如果該緩衝值被設定為0,則表示不使用緩衝。如果該緩衝值是1,則在存取一個檔案進行時行緩衝。
如果指定緩衝值大於1的整數,緩衝使用所指示的緩衝器大小進行。如果是負數,緩衝區大小是系統預設的(預設行為)。
模式 | 描述 |
---|---|
r | 開啟一個檔案為唯讀。檔案指標被放置在檔案的開頭。這是預設模式。 |
rb | 開啟一個檔案只能以二進位制格式讀取。檔案指標被放置在檔案的開頭。這是預設模式。 |
r+ | 開啟用於讀和寫檔案。檔案指標置於該檔案的開頭。 |
rb+ | 開啟用於讀取和寫入二進位制格式的檔案。檔案指標置於該檔案的開頭。 |
w | 開啟一個檔案只寫。如果檔案存在覆蓋該檔案。如果該檔案不存在,則建立寫入新檔案。 |
wb | 開啟一個檔案只能以二進位制格式寫入。如果檔案存在覆蓋該檔案。如果該檔案不存在,則建立寫入新檔案。 |
w+ | 開啟檔案為寫入和讀取模式。如果檔案存在覆蓋現有檔案。如果該檔案不存在,建立用於讀寫操作的新檔案。 |
wb+ | 開啟用於以二進位制格式寫入和讀出檔案。如果檔案存在覆蓋現有檔案。如果該檔案不存在,建立用於讀寫操作的新檔案。 |
a | 開啟用於追加的檔案。檔案指標是在檔案是否存在該檔案的末尾。也就是說,該檔案是在追加模式。如果該檔案不存在,它會建立一個用於寫入的新檔案。 |
ab | 開啟檔案用於二進位制格式追加。檔案指標是在檔案是否存在該檔案的末尾。也就是說,檔案是在追加模式。 如果該檔案不存在,它會建立一個用於寫入的新檔案。 |
a+ | 開啟檔案為追加和讀取方式。檔案指標是在檔案是否存在該檔案的末尾。該檔案以追加模式開啟。如果該檔案不存在,它將建立用於讀寫操作的新檔案。 |
ab+ | 開啟一個檔案以附加和二進位制格式讀取模式。如果該檔案存在檔案指標在該檔案的末尾。該檔案以追加模式開啟。如果該檔案不存在,它將建立讀寫操作的新檔案。 |
一旦檔案被開啟,則就會有一個檔案物件,你就可以得到有關該檔案的各種資訊。
屬性 | 描述 |
---|---|
file.closed |
如果檔案被關閉返回true,否則為false
|
file.mode |
返回檔案開啟存取模式
|
file.name |
返回檔案名
|
#!/usr/bin/python3 # Open a file fo = open("foo.txt", "wb") print ("Name of the file: ", fo.name) print ("Closed or not : ", fo.closed) print ("Opening mode : ", fo.mode) fo.close()
Name of the file: foo.txt Closed or not : False Opening mode : wb
檔案物件的close()方法用於重新整理任何未寫入的資訊,並關閉檔案物件, 之後就沒有更多的寫入東西了。
Python自動關閉檔案當參考檔案物件分配給另一個檔案。使用 close()方法關閉檔案一個很好的做法。
fileObject.close();
#!/usr/bin/python3 # Open a file fo = open("foo.txt", "wb") print ("Name of the file: ", fo.name) # Close opened file fo.close()
Name of the file: foo.txt
檔案物件提供了一組存取方法。 我們將看到如何使用 read()和write()方法來讀取和寫入檔案。
write()方法將字串寫入一個開啟的檔案。要注意,Python的字串可以是二進位制資料,而不僅僅只是文字。
fileObject.write(string);
#!/usr/bin/python3 # Open a file fo = open("foo.txt", "w") fo.write( "Python is a great language.\nYeah its great!!\n") # Close opend file fo.close()
上面的方法將建立 foo.txt 檔案,並給出的內容寫入檔案,最後將關閉該檔案。如果開啟這個檔案,會看到它有以下內容。
Python is a great language. Yeah its great!!
read()方法從一個開啟的檔案讀取字串。要注意,Python字串可以是二進位制資料。而並非只是文字資料。
fileObject.read([count]);
這裡,傳遞的引數是從開啟的檔案讀取的位元組數。該方法開始從檔案的開始讀取,並且如果 count 丟失,那麼它會嘗試盡可能讀,也許直到檔案的末尾。
#!/usr/bin/python3 # Open a file fo = open("foo.txt", "r+") str = fo.read(10) print ("Read String is : ", str) # Close opened file fo.close()
Read String is : Python is
tell() 方法告訴你該檔案中的當前位置;換句話說,下一個讀或寫將發生在從該檔案的開頭之後多個位元組。
seek(offset[, from]) 方法改變當前檔案的位置。 offset 引數指示要移動位元組數。from 引數指定位元組從哪移動的參考位置。
如果 from 被設定為0,這意味著使用該檔案的開頭作為基準位置,以及如果設定為1,則使用當前位置作為基準位置,如果它被設定為2,則該檔案的結束將被作為基準位置。
#!/usr/bin/python3 # Open a file fo = open("foo.txt", "r+") str = fo.read(10) print ("Read String is : ", str) # Check current position position = fo.tell() print ("Current file position : ", position) # Reposition pointer at the beginning once again position = fo.seek(0, 0) str = fo.read(10) print ("Again read String is : ", str) # Close opened file fo.close()
Read String is : Python is Current file position : 10 Again read String is : Python is
os.rename(current_file_name, new_file_name)
#!/usr/bin/python3 import os # Rename a file from test1.txt to test2.txt os.rename( "test1.txt", "test2.txt" )
os.remove(file_name)
#!/usr/bin/python3 import os # Delete file test2.txt os.remove("text2.txt")
所有的檔案都包含不同的目錄中,Python處理這些目錄操作也沒有什麼問題。os模組中有用於建立,刪除和更改目錄的幾種方法。
可以使用os模組中的 mkdir()方法在當前目錄下建立目錄。需要提供一個引數到這個方法指定要建立的目錄名。
os.mkdir("newdir")
#!/usr/bin/python3 import os # Create a directory "test" os.mkdir("test")
可以使用 chdir() 方法來改變當前目錄。chdir() 方法接受一個引數,就是你想在當前目錄建立的目錄的目錄名稱。
os.chdir("newdir")
#!/usr/bin/python3 import os # Changing a directory to "/home/newdir" os.chdir("/home/newdir")
os.getcwd()
#!/usr/bin/python3 import os # This would give location of the current directory os.getcwd()
os.rmdir('dirname')
以下是刪除 "/tmp/test" 目錄的例子。它需要給定目錄的完全合格的名稱,否則會從當前目錄搜尋目錄。
#!/usr/bin/python3 import os # This would remove "/tmp/test" directory. os.rmdir( "/tmp/test" )
有三個重要來源,它提供了多種實用的方法來處理 和操作在Windows和Unix作業系統的檔案和目錄。它們如下 -