久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

Python 讀取文件 | 如何在 Python 中打開、讀取和寫入文件

在使用任何編程語言時,讀取和寫入文件是一種常見的操作。您可以對代碼進行編程以從文件中讀取數據或指令,然后再寫入數據。這提高了效率并減少了人工。

Python 有一個定義明確的方法來打開、讀取和寫入文件。Python 中文件操作的一些應用程序包括:讀取數據以進行算法訓練和測試、讀取文件以創建生成藝術、報告和讀取配置文件。 ?

在本教程中,您將學習:

  1. 如何將文件加載到主內存并創建文件句柄。
  2. 如何使用文件句柄打開文件進行讀寫。
  3. 處理文件時的異常處理。

先決條件:

  • 確保您安裝了最新的 Python 版本。
  • 熟悉您選擇的任何 Python 支持的文本編輯器。
  • 熟悉基本的 Python 語法。

要快速訪問 Python IDE,請查看Replit。你也可以克隆這個repo 并在 Replit 上運行它。

持久性以及如何將文件加載到主內存中

文件駐留在計算機的輔助內存中。輔助內存是持久的,這意味著當計算機斷電時數據不會被擦除。對文件進行更改并保存后,更改將永久寫入并保存在輔助存儲器中。

要處理文件,我們需要先將它們加載到主內存中。主內存是臨時緩存內存,用于在短時間內保存請求的數據。計算機斷電時數據丟失。

文件從輔助存儲器加載到主存儲器,然后由 CPU 處理。 處理完成后,數據將被寫回輔助存儲器。
文件從輔助存儲器加載到主存儲器,然后由 CPU 處理。處理完成后,數據將被寫回輔助存儲器。

Python 通過“文件處理程序”與加載到主內存中的文件進行交互。讓我們詳細看看文件處理程序。

文件處理程序如何工作

當我們要讀取或寫入文件時,我們必須先打開它。打開文件向操作系統發出信號,以按文件名搜索文件并確保其存在。

如果打開成功,操作系統將返回一個文件處理程序。然后我們可以通過文件處理程序與我們的文件進行交互。

文件處理程序不包含數據本身,它只是提供一個處理文件操作的接口。

文件處理程序使您的程序可以訪問輔助存儲器中的數據。
文件處理程序使您的程序可以訪問輔助存儲器中的數據。

如何打開文件

在本例中,我們將打開文件daffodils.txt.?請注意,此文件應存儲在與 Python 程序相同的文件夾中。daffodils.txt您可以從此GitHub 鏈接下載該文件

請看一下該文件,因為我們將在接下來的示例中使用它的內容。

例子:

fhand = open('daffodils.txt')
print(fhand)

fhand在上面的示例中,如果打開成功,操作系統將返回變量中的文件句柄。默認情況下,您只能讀取文件。

輸出:

圖像 177
文件句柄的輸出。

在輸出中,我們收到了一個文件句柄,其中name是文件名和mode權限,在我們的例子中是r(代表read)。encoding是 Unicode 字符集的編碼機制。您可以在此處了解有關 UTF-8 的更多詳細信息。

例外:

如果文件不存在,我們會得到如下異常:

找不到文件時的異常。
找不到文件時的異常。

如何打印文件

現在我們有了文件句柄,這意味著我們可以訪問該文件。讓我們打印文件并查看其內容。

例子:

# Get the file handler
fhand = open('daffodils.txt')

# Loop through each line via file handler
for line in fhand:
  print(line) 

輸出:

圖像 179
打印文件的內容。

我們能夠成功訪問和打印文件。但是,您是否注意到我們在每行之間出現了額外的空白行?對此有一個解釋。讓我們在下一節中看到。

如何處理額外的行空間

換行符在 Python 中由 表示n。當放置在字符串中的任何位置時,此字符會添加一個新行。

每行末尾都有一個換行符,用于將輸出打印到下一行。我們可以使用該repr方法對其進行可視化。

根據 Python文檔,該repr()方法返回一個包含對象可打印表示的字符串。這意味著我們可以看到t or a n出現在字符串中的任何特殊字符,例如 a。 ?

讓我們在下面運行一個示例并查看輸出。

圖像 180
使用 . 表示字符串repr()

例子:

回到我們的文件,我們可以repr()用來檢查特殊字符。

# Get the file handler
fhand = open('daffodils.txt')

# Loop through each line via file handler
for line in fhand:
  print(repr(line)) 

輸出:

圖像 181
在這里,我們可以看到幕后發生的事情。

此外,print 方法默認添加一個新行。這意味著使用 print,我們將在輸出中獲得另一個新行。我們可以使用兩種方法來處理這個額外的行。

 

方法 #1:更改 print 的默認結束值

下面的代碼片段顯示了該print函數的參數。我們可以看到默認情況下 的end值為n。這意味著每個打印語句都以n.

圖像 22
來源:Python為空白,這樣我們就不會在每行末尾換行。讓我們看下面的例子來更好地理解。

# By default output would go in separate lines
print("Hello")
print("World")

# Print on the same line because end = ' '
# added single space
print("Hello", end = ' ') 
print("World")

輸出:

圖像 182
使用 .在相同和不同的行上打印print()。?

回到我們的主文件,讓我們稍微修改一下代碼以獲得沒有額外空行的輸出。

# Get the file handler
fhand = open('daffodils.txt')

# Loop through each line and modify the default value of 'end'
for line in fhand:
  print(line, end = '')

輸出:

在這里,我們得到了我們想要的輸出!

使用 print() 打印沒有多余的行。
使用print().

方法 #2:使用 rstrip() 方法

strip()我們可以使用該方法刪除字符串周圍的某些字符。

現在我們知道,默認情況下,文件中的每一行都有"n"結尾。由于我們只關心右邊的字符,我們將使用rstrip()which 代表 right-strip。我們將討論rstrip()下一個示例。

strip()您可以在此博客文章中了解有關該方法的更多信息。

# Get the file handler
fhand = open('daffodils.txt')

# Loop through each line and remove extra line character with rstrip()
for line in fhand:
  line = line.rstrip()
  print(line)

輸出:

使用 rstrip() 打印沒有多余的行。
使用 rstrip 打印沒有額外的行()

如何讓用戶選擇文件

我們可以通過讓用戶選擇文件來使代碼動態化,而不是硬編碼文件名。

讓我們讓用戶輸入一個文件名。然后我們將計算文件中的行數。

例子:

fname = input('Enter the file name: ')
fhand = open(fname)
count = 0
for line in fhand:
     count = count + 1
print('There are', count, 'lines in', fname)
要求用戶輸入文件名。

輸出:

要求用戶輸入文件名。
要求用戶輸入文件名。

如何在 Python 中編寫文件

默認情況下,文件處理程序以讀取模式打開文件。如果我們使用以下任何一種模式打開文件,我們就可以寫入文件:

  • w- (寫入)寫入現有文件但刪除現有內容。
  • a- (追加)追加到現有文件。
  • x- (創建)創建一個文件,如果文件存在則返回錯誤。

如何寫入文件

請注意,如果我們嘗試使用w標志打開一個已經存在的文件,則內容將被覆蓋。

# Open file with mode 'w'
fout = open('flower.txt', 'w')
fout.write("This content would be added and existing would be discarded")
fout.close()

如何附加到文件

a標志附加到現有內容并保留現有內容。

# Open file with mode 'a'
fout = open('flower.txt', 'a')
fout.write("Now the file has more content at the end!")
fout.close()

如何創建文件并寫入

x模式創建一個文件并向其中添加內容。

# Open file with mode 'x'
fout = open('new-file.txt', 'x')
fout.write("Now the new file has some content!")
fout.close()

如果文件存在,我們會得到如下異常:

Traceback (most recent call last):
  File "main.py", line 2, in <module>
    fout = open('flower.txt', 'x')
FileExistsError: [Errno 17] File exists: 'flower.txt'

異常處理

我們請求的文件可能不存在。由于異常,這會炸毀程序:

圖像 189

為了讓程序對用戶更加友好,我們可以在一個try-except塊中處理這個異常。

程序中預期會崩潰的風險部分寫在一個try塊中。如果代碼無異常執行,except則跳過該塊并繼續運行程序。如果發現異常,該塊將使用命令except優雅地運行并關閉程序。exit

fname = input('Enter the file name: ')
try:
  fhand = open(fname)
except:
  print('File nout found and can not be opened:', fname)
  exit()
count=0
for line in fhand:
  count = count + 1
print('There are', count, 'lines in', fname)

輸出:

圖像 188
使用 try-except 塊處理異常。

包起來

知道如何使用文件是編程中的一個基本概念。在本教程中,您學習了如何使用文件處理程序在 Python 中打開文件以進行讀寫。

 

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

    1. 主站蜘蛛池模板: 嘉兴市| 建昌县| 万盛区| 和林格尔县| 浪卡子县| 万全县| 全椒县| 龙口市| 阳东县| 水城县| 石狮市| 达孜县| 庄浪县| 盖州市| 治多县| 盐城市| 齐河县| 张家界市| 石柱| 根河市| 寿阳县| 依安县| 阳东县| 钟祥市| 休宁县| 东山县| 伊金霍洛旗| 南平市| 连云港市| 司法| 嘉鱼县| 星子县| 托克托县| 万宁市| 阿图什市| 武义县| 泰宁县| 尚志市| 浦城县| 青浦区| 文安县|