產(chǎn)生輸出的最簡單方法是使用print語句,可以通過用逗號分隔零個或多個表達式。這個函數(shù)傳遞表達式轉(zhuǎn)換為一個字符串,如下結(jié)果寫到標準輸出 -
#!/usr/bin/python3
print ("Python is really a great language,", "isn't it?")
Python is really a great language, isn't it?
Python2中有兩個內(nèi)置的函數(shù)可從標準輸入讀取數(shù)據(jù),它默認來自鍵盤。這些函數(shù)分別是:input() 和 raw_input()。
但在Python3中,raw_input()函數(shù)已被棄用。此外, input() 函數(shù)是從鍵盤作為字符串讀取數(shù)據(jù),不論是否使用引號(''或“”)與否。
input([prompt]) 函數(shù)等同 raw_input,不同之處在于它假定輸入是一個有效的Python表達式并計算結(jié)果返回給你。
#!/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'"
到現(xiàn)在為止,已經(jīng)學習了讀取和寫入標準輸入和輸出。現(xiàn)在,我們學習如何使用文件實際數(shù)據(jù)。
Python提供了基本的功能和必要的默認操作文件的方法。您可以使用一個 file 對象來做大部分的文件操作。
在讀取或?qū)懭胍粋€文件之前,你必須使用 Python 內(nèi)置open()函數(shù)來打開它。 該函數(shù)創(chuàng)建一個文件對象,這將被用來調(diào)用與它相關(guān)的其他支持方式。
file object = open(file_name [, access_mode][, buffering])
file_name: 文件名(file_name )參數(shù)是包含您要訪問的文件名的字符串值。
access_mode: access_mode指定該文件已被打開,即讀,寫,追加等方式。可能值的完整列表,在表中如下。
buffering: 如果該緩沖值被設(shè)置為0,則表示不使用緩沖。如果該緩沖值是1,則在訪問一個文件進行時行緩沖。
如果指定緩沖值大于1的整數(shù),緩沖使用所指示的緩沖器大小進行。如果是負數(shù),緩沖區(qū)大小是系統(tǒng)默認的(默認行為)。
| 模式 | 描述 |
|---|---|
| r | 打開一個文件為只讀。文件指針被放置在文件的開頭。這是默認模式。 |
| rb | 打開一個文件只能以二進制格式讀取。文件指針被放置在文件的開頭。這是默認模式。 |
| r+ | 打開用于讀和寫文件。文件指針置于該文件的開頭。 |
| rb+ | 打開用于讀取和寫入二進制格式的文件。文件指針置于該文件的開頭。 |
| w | 打開一個文件只寫。如果文件存在覆蓋該文件。如果該文件不存在,則創(chuàng)建寫入新文件。 |
| wb | 打開一個文件只能以二進制格式寫入。如果文件存在覆蓋該文件。如果該文件不存在,則創(chuàng)建寫入新文件。 |
| w+ | 打開文件為寫入和讀取模式。如果文件存在覆蓋現(xiàn)有文件。如果該文件不存在,創(chuàng)建用于讀寫操作的新文件。 |
| wb+ | 打開用于以二進制格式寫入和讀出文件。如果文件存在覆蓋現(xiàn)有文件。如果該文件不存在,創(chuàng)建用于讀寫操作的新文件。 |
| a | 打開用于追加的文件。文件指針是在文件是否存在該文件的末尾。也就是說,該文件是在追加模式。如果該文件不存在,它會創(chuàng)建一個用于寫入的新文件。 |
| ab | 打開文件用于二進制格式追加。文件指針是在文件是否存在該文件的末尾。也就是說,文件是在追加模式。 如果該文件不存在,它會創(chuàng)建一個用于寫入的新文件。 |
| a+ | 打開文件為追加和讀取方式。文件指針是在文件是否存在該文件的末尾。該文件以追加模式打開。如果該文件不存在,它將創(chuàng)建用于讀寫操作的新文件。 |
| ab+ | 打開一個文件以附加和二進制格式讀取模式。如果該文件存在文件指針在該文件的末尾。該文件以追加模式打開。如果該文件不存在,它將創(chuàng)建讀寫操作的新文件。 |
一旦文件被打開,則就會有一個文件對象,你就可以得到有關(guān)該文件的各種信息。
| 屬性 | 描述 |
|---|---|
| file.closed |
如果文件被關(guān)閉返回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()方法用于刷新任何未寫入的信息,并關(guān)閉文件對象, 之后就沒有更多的寫入東西了。
Python自動關(guān)閉文件當參考文件對象分配給另一個文件。使用 close()方法關(guān)閉文件一個很好的做法。
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的字符串可以是二進制數(shù)據(jù),而不僅僅只是文字。
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()
上面的方法將創(chuàng)建 foo.txt 文件,并給出的內(nèi)容寫入文件,最后將關(guān)閉該文件。如果打開這個文件,會看到它有以下內(nèi)容。
Python is a great language. Yeah its great!!
read()方法從一個打開的文件讀取字符串。要注意,Python字符串可以是二進制數(shù)據(jù)。而并非只是文本數(shù)據(jù)。
fileObject.read([count]);
這里,傳遞的參數(shù)是從打開的文件讀取的字節(jié)數(shù)。該方法開始從文件的開始讀取,并且如果 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() 方法告訴你該文件中的當前位置;換句話說,下一個讀或?qū)憣l(fā)生在從該文件的開頭之后多個字節(jié)。
seek(offset[, from]) 方法改變當前文件的位置。 offset 參數(shù)指示要移動字節(jié)數(shù)。from 參數(shù)指定字節(jié)從哪移動的參考位置。
如果 from 被設(shè)置為0,這意味著使用該文件的開頭作為基準位置,以及如果設(shè)置為1,則使用當前位置作為基準位置,如果它被設(shè)置為2,則該文件的結(jié)束將被作為基準位置。
#!/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模塊中有用于創(chuàng)建,刪除和更改目錄的幾種方法。
可以使用os模塊中的 mkdir()方法在當前目錄下創(chuàng)建目錄。需要提供一個參數(shù)到這個方法指定要創(chuàng)建的目錄名。
os.mkdir("newdir")
#!/usr/bin/python3
import os
# Create a directory "test"
os.mkdir("test")
可以使用 chdir() 方法來改變當前目錄。chdir() 方法接受一個參數(shù),就是你想在當前目錄創(chuàng)建的目錄的目錄名稱。
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操作系統(tǒng)的文件和目錄。它們?nèi)缦?nbsp;-