shutil和fileinput模塊:文件操作的最佳實踐

在Python中,shutil和fileinput模塊是處理文件和輸入/輸出(I/O)操作的有力工具。shutil模塊提供了一種在Python中操作文件的高級接口,而fileinput模塊則允許我們輕松地讀取多個輸入流。

shutil模塊

shutil模塊是Python的標準庫之一,提供了很多用于處理文件和文件夾的函數。下面是一些常用的shutil函數:

  1. ??shutil.copy(src, dst)??: 復制源文件(src)到目標路徑(dst)。
  2. ??shutil.move(src, dst)??: 將源文件(src)移動到目標路徑(dst)。
  3. ??shutil.copytree(src, dst)??: 復制源文件夾(src)到目標路徑(dst)。
  4. ??shutil.rmtree(path)??: 刪除包含空文件夾的路徑。
  5. ??shutil.chown(path, user=None, group=None)??: 改變路徑(path)的所有者。
  6. ??shutil.get_terminal_size()??: 返回終端窗口的大小。
  7. ??shutil.disk_usage(path)??: 返回指定路徑的磁盤使用情況。
  8. ??shutil.make_archive(base_name, format, root_dir=None, verbose=0, dry_run=0)??: 創建歸檔文件。
  9. ??shutil.register_rmtree(dir)??: 在rmtree函數中注冊文件夾,以便在刪除時通知rmtree函數。

以下是shutil模塊的使用示例:

pythonimport shutil
import os# 創建文件夾
os.makedirs('test_folder')# 復制文件
shutil.copy('source.txt', 'test_folder/destination.txt')# 移動文件
shutil.move('source.txt', 'test_folder/source.txt')# 刪除文件夾,包括其中的所有文件和子文件夾
shutil.rmtree('test_folder')
import shutil
import os# 創建文件夾
os.makedirs('test_folder')# 復制文件
shutil.copy('source.txt', 'test_folder/destination.txt')# 移動文件
shutil.move('source.txt', 'test_folder/source.txt')# 刪除文件夾,包括其中的所有文件和子文件夾
shutil.rmtree('test_folder')

fileinput模塊

fileinput模塊允許用戶在Python程序中輕松地迭代多個輸入流,包括標準輸入、文件和目錄。fileinput模塊的主要功能是處理多個輸入流,這對于處理命令行參數、文件名和標準輸入非常有用。它支持在每個文件上執行操作,并在操作完成后自動關閉文件。以下是一些常用的fileinput函數:

  1. ??fileinput.input(files=None, inplace=False, backup='', bufsize=-1, mode='b', openhook=None)??: 從文件中讀取行。
  2. ??fileinput.FileInput(files=None, inplace=False, backup='', bufsize=-1, mode='b', openhook=None)??: 從文件中讀取行,并保持打開的文件句柄。
  3. ??fileinput.hook_compressed(method=None, mode='b')??: 為open函數添加壓縮支持。
  4. ??fileinput.hook_encoded(encoding=None)??: 為open函數添加編碼支持。
  5. ??fileinput.close()??: 關閉所有打開的文件句柄。
  6. ??fileinput.isfirstline()??: 如果當前行是第一個行,則返回True。
  7. ??fileinput.isstdin()??: 如果當前行來自標準輸入,則返回True。
  8. ??fileinput.nextfile()??: 關閉當前文件并前進到下一個文件。如果已經處于最后一個文件,則返回None。
  9. ??fileinput.filename()??: 返回當前文件的名稱。如果已經處于最后一個文件,則返回None。
  10. ??fileinput.lineno()??: 返回當前行的行號。如果已經處于最后一個文件,則返回None。
  11. ??fileinput.filelineno()??: 返回當前文件的行號。如果已經處于最后一個文件,則返回None。
  12. ??fileinput.fileno()??: 返回當前文件的文件描述符。如果已經處于最后一個文件,則返回None。
  13. ??fileinput.readline()??: 讀取并返回當前文件的下一行,不包括結尾的換行符(如果有的話)。如果已經處于最后一個文件,則返回None。
  14. ??fileinput.readlines()??: 讀取并返回當前文件的剩余所有行,每行作為一個字符串列表。如果已經處于最后一個文件,則返回None。
  15. ??fileinput.__next__():__next__()??:讀取并返回當前文件的下一行,不包括結尾的換行符(如果有的話)。如果已經處于最后一個文件,則引發StopIteration異常。

以下是使用fileinput模塊的示例代碼:

pythonimport fileinput# 從文件中讀取行并輸出到控制臺
for line in fileinput.input('test.txt'):print(line)# 在文件上執行操作并輸出結果
with fileinput.FileInput('test.txt') as f:for line in f:# 對每一行進行處理processed_line = line.strip().upper()print(processed_line)
import fileinput# 從文件中讀取行并輸出到控制臺
for line in fileinput.input('test.txt'):print(line)# 在文件上執行操作并輸出結果
with fileinput.FileInput('test.txt') as f:for line in f:# 對每一行進行處理processed_line = line.strip().upper()print(processed_line)

在上面的示例中,我們使用??fileinput.input()??函數從文件中讀取行,并將其打印到控制臺。我們還使用??fileinput.FileInput()??函數創建一個文件對象,并在其上迭代每一行。對于每一行,我們執行一些操作(例如去除首尾的空白字符并轉換為大寫字母),然后將其打印到控制臺。

除了上述示例外,fileinput模塊還提供了許多其他功能,例如支持從標準輸入讀取行、支持文件備份、支持指定緩沖區大小等等。您可以查看Python文檔以獲取更多信息。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165828.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165828.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165828.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【【Linux系統下常用指令學習 之 二 】】

Linux系統下常用指令學習 之 二 文件查詢和搜索 文件的查詢和搜索也是最常用的操作,在嵌入式 Linux 開發中常常需要在 Linux 源碼文件中查詢某個文件是否存在,或者搜索哪些文件都調用了某個函數等等。 1、命令 find find 命令用于在目錄結構中查找文件…

BUUCTF [ACTF新生賽2020]outguess 1

BUUCTF:https://buuoj.cn/challenges 題目描述: 得到的 flag 請包上 flag{} 提交。 密文: 下載附件,得到一堆文件。 解題思路: 1、根據題目和flag.txt文件提示,猜測為outguess隱寫。 outguess下載安裝 kail 終端命…

數字鄉村:科技賦能農村產業升級

數字鄉村:科技賦能農村產業升級 數字鄉村是指通過信息技術和數字化手段,推動農業現代化、農村經濟發展和農民增收的一種新模式。近年來,隨著互聯網技術的飛速發展,數字鄉村開始在全國范圍內迅速興起,為鄉村經濟注入了新…

leedcode 刷題 - 除自身以外數組的乘積 - 和為 K 的子數組

I238. 除自身以外數組的乘積 - 力扣(LeetCode) 給你一個整數數組 nums,返回 數組 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘積 。 題目數據 保證 數組 nums之中任意元素的全部前綴元素和后綴的乘積都在…

AdaBoost提升分類器性能

目錄 AdaBoost算法原理 AdaBoost工作詳情 初始權重分配 第一輪 第二輪 后續輪次 最終模型 AdaBoost的API解釋 AdaBoost 對房價進行預測 AdaBoost 與決策樹模型的比較 結論 AdaBoost算法原理 在數據挖掘中,分類算法可以說是核心算法,其中 Ada…

gitee推薦-PHP面試準備的資料

該內容為giee項目。PHP-Interview: 這個項目是自己準備PHP面試整理的資料。包括PHP、MySQL、Linux、計算機網絡等資料。方便自己以后查閱,會不定期更新,歡迎提交pr,如果錯誤,請指出,謝謝 在線預覽地址:Intr…

leetcode面試經典150題——31 無重復字符的最長子串(方法二極簡代碼!!!)

題目: 無重復字符的最長子串 描述: 給定一個字符串 s ,請你找出其中不含有重復字符的 最長子串 的長度。 示例 1: 輸入: s “abcabcbb” 輸出: 3 解釋: 因為無重復字符的最長子串是 “abc”,所以其長度為 3。 leetcode鏈接 方法…

【LeetCode刷題筆記】DFSBFS(三)

圖的基礎知識 鄰接矩陣是一個二維表,其中橫縱坐標交叉的格子值為 1 的表示這兩個頂點是連通的,否則是不連通的。

Python-csv庫進行數據保存和讀寫

在 Python 中使用 CSV 文件非常簡單,Python 提供了內置的 csv 模塊來處理 CSV 文件。你可以使用 csv 模塊來讀取、寫入和操作 CSV 文件中的數據。 基礎使用 讀取 CSV 文件 python import csv# 打開 CSV 文件進行讀取 with open(file.csv, moder) as file:reader …

NVM得介紹和詳細使用教程

NVM???????(Node Version Manager)是一個用于管理多個Node.js版本的工具。它允許您在同一臺計算機上輕松地切換和管理不同的Node.js版本。以下是NVM的介紹和詳細使用教程: 安裝NVM: 首先,您需要在計算機上安裝N…

C#串口通信從入門到精通(27)——高速通信下解決數據處理慢的問題(20ms以內)

前言 我們在開發串口通信程序時,有時候會遇到比如單片機或者傳感器發送的數據速度特別快,比如10ms、20ms發送一次,并且每次發送的數據量還比較大,如果按照常規的寫法,我們會發現接收的數據還沒處理完,新的數據又發送過來了,這就會導致處理數據滯后,軟件始終處理的不是…

python樹的雙親存儲結構

這種存儲結構是一種順序存儲結構,采用元素形如“[結點值,雙親結點索引]”的列表表示。通常每個結點有唯一的索引(或者偽地址),根結點的索引為0,它沒有雙親結點,其雙親結點的索引為-1。例如,所示的樹對應的雙…

123. 股票買賣的最佳時機III(2次交易)

題目 題解 class Solution:def maxProfit(self, prices: List[int]) -> int:N len(prices)# 狀態定義 dp[i][j][k]代表在第i天,被允許完成j次交易時,持有或者不持有的最大利潤。k0代表不持有,k1代表持有dp [[[0 for k in range(2)] for…

醫學生秋招攻略,面試時一定要注意這些方面!

醫學生別拖了,今年秋招已經過去一波熱度了,趕早不趕晚!在籌備第二輪秋招以及明年的春招的醫學生一定要注意以下事項。 1.清晰目標 搜集秋招訊息 一定要早點多做準備,想清楚未來的目標,是繼續深造還是就業做醫生或者是…

FileReader與URL.createObjectURL實現圖片、視頻上傳預覽

之前做圖片、視頻上傳預覽常用的方案是先把文件上傳到服務器,等服務器返回文件的地址后,再把該地址字符串賦給img或video的src屬性,這才實現所謂的文件預覽。實際上這只是文件“上傳后再預覽”,這既浪費了用戶的時間,也…

java開發合同相關

【點我-這里送書】 本人詳解 作者:王文峰,參加過 CSDN 2020年度博客之星,《Java王大師王天師》 公眾號:JAVA開發王大師,專注于天道酬勤的 Java 開發問題中國國學、傳統文化和代碼愛好者的程序人生,期待你的關注和支持!本人外號:神秘小峯 山峯 轉載說明:務必注明來源(…

集合的分類

Python內建的集合類,有有序和無序之分,還有可修改和不可修改之分。 1 有序和無序 有序是說某數據集合中的每個元素都有一個位置信息,通常用index表示,可以借助這種集合類型名和位置信息訪問集合里的某元素值,在Pytho…

【開源】基于Vue.js的用戶畫像活動推薦系統

項目編號: S 061 ,文末獲取源碼。 \color{red}{項目編號:S061,文末獲取源碼。} 項目編號:S061,文末獲取源碼。 目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 數據中心模塊2.2 興趣標簽模塊2.3 活…

[Android]使用Git將項目提交到GitHub

如果你的Mac還沒有安裝Git,你可以通過Homebrew來安裝它: brew install git 方式一:終端管理 1.創建本地Git倉庫 在項目的根目錄下,打開終端(Terminal)并執行以下命令來初始化一個新的Git倉庫&#xff1…

vue3-組件傳參及計算屬性

?🌈個人主頁:前端青山 🔥系列專欄:Vue篇 🔖人終將被年少不可得之物困其一生 依舊青山,本期給大家帶來vue篇專欄內容:vue3-組件傳參及計算屬性 目錄 vue3中的組件傳參 1、父傳子 2、子傳父 toRef 與 toRefs vue3中…