Python - AI 助手

Python - 檔案 I/O



本章涵蓋了 Python 中所有可用的基本 I/O 函式。有關更多函式,請參閱標準 Python 文件。

列印到螢幕

輸出最簡單的方法是使用print語句,您可以在其中傳遞以逗號分隔的零個或多個表示式。此函式將您傳遞的表示式轉換為字串,並將結果寫入標準輸出,如下所示:

#!/usr/bin/python

print "Python is really a great language,", "isn't it?"

這會在您的標準螢幕上產生以下結果:

Python is really a great language, isn't it?

讀取鍵盤輸入

Python 提供了兩個內建函式來從標準輸入讀取一行文字,預設情況下來自鍵盤。這些函式是:

  • raw_input
  • input

raw_input 函式

raw_input([prompt]) 函式從標準輸入讀取一行並將其作為字串返回(刪除尾隨換行符)。

#!/usr/bin/python

str = raw_input("Enter your input: ")
print "Received input is : ", str

這會提示您輸入任何字串,它會將相同的字串顯示在螢幕上。當我輸入“Hello Python!”時,其輸出如下所示:

Enter your input: Hello Python
Received input is :  Hello Python

input 函式

input([prompt]) 函式等效於 raw_input,除了它假定輸入是一個有效的 Python 表示式並將計算結果返回給您。

#!/usr/bin/python

str = input("Enter your input: ")
print "Received input is : ", str

這將針對輸入的輸入產生以下結果:

Enter your input: [x*5 for x in range(2,10,2)]
Recieved input is :  [10, 20, 30, 40]

開啟和關閉檔案

到目前為止,您一直在讀取和寫入標準輸入和輸出。現在,我們將瞭解如何使用實際的資料檔案。

Python 預設提供處理檔案所需的基本函式和方法。您可以使用檔案物件執行大部分檔案操作。

open 函式

在讀取或寫入檔案之前,您必須使用 Python 的內建open()函式開啟它。此函式建立一個檔案物件,該物件將用於呼叫與其關聯的其他支援方法。

語法

file object = open(file_name [, access_mode][, buffering])

以下是引數詳細資訊:

  • file_name - file_name 引數是一個字串值,包含您要訪問的檔案的名稱。

  • access_mode - access_mode 確定必須以何種模式開啟檔案,即讀取、寫入、追加等。下表給出了所有可能值的完整列表。這是一個可選引數,預設檔案訪問模式是讀取 (r)。

  • buffering - 如果 buffering 值設定為 0,則不進行緩衝。如果 buffering 值為 1,則在訪問檔案時執行行緩衝。如果您將 buffering 值指定為大於 1 的整數,則將使用指示的緩衝區大小執行緩衝操作。如果為負數,則緩衝區大小為系統預設值(預設行為)。

以下是開啟檔案的不同模式的列表:

序號 模式 & 描述
1

r

僅開啟檔案以進行讀取。檔案指標放置在檔案開頭。這是預設模式。

2

rb

以二進位制格式僅開啟檔案以進行讀取。檔案指標放置在檔案開頭。這是預設模式。

3

r+

開啟檔案以進行讀取和寫入。檔案指標放置在檔案開頭。

4

rb+

以二進位制格式開啟檔案以進行讀取和寫入。檔案指標放置在檔案開頭。

5

w

僅以寫入方式開啟檔案。如果檔案存在,則覆蓋檔案。如果檔案不存在,則建立一個新檔案以進行寫入。

6

wb

以二進位制格式僅以寫入方式開啟檔案。如果檔案存在,則覆蓋檔案。如果檔案不存在,則建立一個新檔案以進行寫入。

7

w+

以寫入和讀取兩種方式開啟檔案。如果檔案存在,則覆蓋現有檔案。如果檔案不存在,則建立一個新的檔案以進行讀取和寫入。

8

wb+

以二進位制格式以寫入和讀取兩種方式開啟檔案。如果檔案存在,則覆蓋現有檔案。如果檔案不存在,則建立一個新的檔案以進行讀取和寫入。

9

a

以追加方式開啟檔案。如果檔案存在,則檔案指標位於檔案末尾。也就是說,檔案處於追加模式。如果檔案不存在,則建立一個新檔案以進行寫入。

10

ab

以二進位制格式以追加方式開啟檔案。如果檔案存在,則檔案指標位於檔案末尾。也就是說,檔案處於追加模式。如果檔案不存在,則建立一個新檔案以進行寫入。

11

a+

以追加和讀取兩種方式開啟檔案。如果檔案存在,則檔案指標位於檔案末尾。檔案以追加模式開啟。如果檔案不存在,則建立一個新的檔案以進行讀取和寫入。

12

ab+

以二進位制格式以追加和讀取兩種方式開啟檔案。如果檔案存在,則檔案指標位於檔案末尾。檔案以追加模式開啟。如果檔案不存在,則建立一個新的檔案以進行讀取和寫入。

file 物件屬性

一旦檔案被開啟並且您擁有一個 file 物件,您就可以獲取與該檔案相關的各種資訊。

以下是與檔案物件相關的所有屬性的列表:

序號 屬性 & 描述
1

file.closed

如果檔案已關閉,則返回 True,否則返回 False。

2

file.mode

返回開啟檔案的訪問模式。

3

file.name

返回檔名。

4

file.softspace

如果 print 需要顯式空格,則返回 False,否則返回 True。

示例

#!/usr/bin/python

# 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
print "Softspace flag : ", fo.softspace

這將產生以下結果:

Name of the file:  foo.txt
Closed or not :  False
Opening mode :  wb
Softspace flag :  0

close() 方法

file 物件的 close() 方法重新整理任何未寫入的資訊並關閉檔案物件,此後無法再進行寫入。

當檔案引用物件被重新分配到另一個檔案時,Python 會自動關閉檔案。建議使用 close() 方法關閉檔案。

語法

fileObject.close()

示例

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "wb")
print "Name of the file: ", fo.name

# Close opend file
fo.close()

這將產生以下結果:

Name of the file:  foo.txt

讀取和寫入檔案

file 物件提供了一組訪問方法來簡化我們的操作。我們將瞭解如何使用 read()write() 方法來讀取和寫入檔案。

write() 方法

write() 方法將任何字串寫入開啟的檔案。需要注意的是,Python 字串可以包含二進位制資料,而不僅僅是文字。

write() 方法不會在字串末尾新增換行符 ('\n'):

語法

fileObject.write(string)

此處,傳遞的引數是要寫入開啟的檔案的內容。

示例

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "wb")
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() 方法

read() 方法從開啟的檔案中讀取字串。需要注意的是,Python 字串可以包含二進位制資料,除了文字資料之外。

語法

fileObject.read([count])

此處,傳遞的引數是從開啟的檔案中讀取的位元組數。此方法從檔案開頭開始讀取,如果省略了 count,則嘗試儘可能多地讀取,可能直到檔案末尾。

示例

讓我們以一個我們上面建立的檔案 foo.txt 為例。

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10);
print "Read String is : ", str
# Close opend file
fo.close()

這將產生以下結果:

Read String is :  Python is

檔案位置

tell() 方法告訴您檔案中的當前位置;換句話說,下一個讀取或寫入操作將發生在距檔案開頭這麼多位元組的位置。

seek(offset[, from]) 方法更改當前檔案位置。offset 引數指示要移動的位元組數。from 引數指定從哪個參考位置移動位元組。

如果 from 設定為 0,則表示使用檔案開頭作為參考位置;1 表示使用當前位置作為參考位置;如果設定為 2,則檔案末尾將作為參考位置。

示例

讓我們以一個我們上面建立的檔案 foo.txt 為例。

#!/usr/bin/python

# 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 opend file
fo.close()

這將產生以下結果:

Read String is :  Python is
Current file position :  10
Again read String is :  Python is

重新命名和刪除檔案

Python 的 os 模組提供了一些方法,可以幫助您執行檔案處理操作,例如重新命名和刪除檔案。

要使用此模組,您需要先匯入它,然後才能呼叫任何相關函式。

rename() 方法

rename() 方法接受兩個引數,當前檔名和新檔名。

語法

os.rename(current_file_name, new_file_name)

示例

以下是重新命名現有檔案 test1.txt 的示例:

#!/usr/bin/python
import os

# Rename a file from test1.txt to test2.txt
os.rename( "test1.txt", "test2.txt" )

remove() 方法

您可以使用 remove() 方法透過提供要刪除的檔名作為引數來刪除檔案。

語法

os.remove(file_name)

示例

以下是刪除現有檔案 test2.txt 的示例:

#!/usr/bin/python
import os

# Delete file test2.txt
os.remove("text2.txt")

Python 中的目錄

所有檔案都包含在各種目錄中,Python 也能很好地處理這些目錄。os 模組有幾個方法可以幫助您建立、刪除和更改目錄。

mkdir() 方法

您可以使用 os 模組的 mkdir() 方法在當前目錄中建立目錄。您需要為此方法提供一個引數,其中包含要建立的目錄的名稱。

語法

os.mkdir("newdir")

示例

以下是建立當前目錄中名為 test 的目錄的示例:

#!/usr/bin/python
import os

# Create a directory "test"
os.mkdir("test")

chdir() 方法

您可以使用 chdir() 方法更改當前目錄。chdir() 方法接受一個引數,即您要設定為當前目錄的目錄的名稱。

語法

os.chdir("newdir")

示例

以下是進入 "/home/newdir" 目錄的示例:

#!/usr/bin/python
import os

# Changing a directory to "/home/newdir"
os.chdir("/home/newdir")

getcwd() 方法

getcwd() 方法顯示當前工作目錄。

語法

os.getcwd()

示例

以下是提供當前目錄的示例:

#!/usr/bin/python
import os

# This would give location of the current directory
os.getcwd()

rmdir() 方法

rmdir() 方法刪除作為方法引數傳遞的目錄。

在刪除目錄之前,應刪除其中的所有內容。

語法

os.rmdir('dirname')

示例

以下是刪除 "/tmp/test" 目錄的示例。需要提供目錄的完全限定名,否則它將在當前目錄中搜索該目錄。

#!/usr/bin/python
import os

# This would  remove "/tmp/test"  directory.
os.rmdir( "/tmp/test"  )

檔案 & 目錄相關方法

有三個重要的來源,它們提供了廣泛的實用程式方法來處理和操作 Windows 和 Unix 作業系統上的檔案和目錄。它們如下:

廣告