Python程序設計 文件處理(二)

實驗十二 文件處理

第1關:讀取宋詞文件,根據詞人建立多個文件

讀取wjcl/src/step1/宋詞.txt文件, 注意:宋詞文件的標題行的詞牌和作者之間是全角空格(" ")可復制該空格

在wjcl/src/step3/cr文件夾下根據每位詞人建立一個文本文件,將各位詞人的所有作品寫入對應的文件

?根據提示,在右側編輯器補充代碼,讀取wjcl/src/step1/宋詞文件,在wjcl/src/step3/cr/文件夾下根據每位詞人建立一個文本文件,將各位詞人的所有作品寫入該文件。

建立文件

文件的打開 <file對象名>=open(<文件名>,<打開模式>) 打開一個文件,并創建一個file類對象 打開模式為a,追加寫模式,文件不存在則創建,存在則在原文件最后追加內容 注意:打開文件后,指針定位在文件的最后 打開模式為w,覆蓋寫模式,文件不存在則創建,存在則完全覆蓋源文件。

寫入文件

f1.write(s) 向文件指針f1寫入一個字符串

import shutil
import os
if os.path.exists("wjcl/src/step3/cr"):shutil.rmtree("wjcl/src/step3/cr")
os.mkdir("wjcl/src/step3/cr")
f1=open("wjcl/src/step1/宋詞.txt",'r')
#代碼開始for i in f1:if " " in i:xm = i.strip()[i.rfind(" ")+1:]f2 = open("wjcl/src/step3/cr/"+xm+".txt", "a")if len(i.strip())>0:f2.write(i)#代碼結束
f1.close()
f2.close()

?第2關:讀取宋詞文件,并根據詞人建立多個文件夾

讀取wjcl/src/step1/宋詞文本文件,在wjcl/src/step4/sccr文件夾下根據每位詞人姓名建立文件夾

文件及文件夾的管理

Os模塊 os模塊為系統內置模塊,提供了對系統環境、文件、目錄等操作系統級的接口函數。 os.path.exists() 文件夾是否存在 mkdir() 創建目錄 rmdir() 刪除目錄 listdir() 返回指定目錄下的所有文件和目錄名 remove() 刪除文件

根據提示,在右側編輯器補充代碼,讀取wjcl/src/step1/宋詞文本文件,在wjcl/src/step4/sccr文件夾下根據每位詞人建立文件夾 注意:標題行的詞牌名和作者之間是全角空格 (" ")可在此復制

import os
import shutil
if os.path.exists("wjcl/src/step4/sccr"):shutil.rmtree("wjcl/src/step4/sccr")
os.mkdir("wjcl/src/step4/sccr")
f1=open("wjcl/src/step1/宋詞.txt",'r')
#代碼開始for i in f1:i = i.strip()if " " in i:xm = i[i.rfind(" ") + 1:]s = "wjcl/src/step4/sccr/"+ xmif not os.path.exists(s):os.mkdir(s)f1.close()
#代碼結束

第3關 讀取宋詞文件,建立多個詞人文件夾,為每首詞在文件夾下建立文本文件

讀取wjcl/src/step1/宋詞文本文件,為每位作者在wjcl/src/step5/cr下建立文件夾,再在作者文件夾下為每首詞建立一個文件 注意:標題行的詞牌名和作者之間是全角空格 (" ")可在此復制

李清照文件夾下的文件?

?

import os
import shutil
if  os.path.exists("wjcl/src/step5/cr"):shutil.rmtree("wjcl/src/step5/cr")
os.mkdir("wjcl/src/step5/cr")
f1=open("wjcl/src/step1/宋詞.txt",'r')
#代碼開始for i in f1:if " " in i:a = i.find(" ")xm = i.strip()[a+1:]s = "wjcl/src/step5/cr/"+ xmif not os.path.exists(s):os.mkdir(s)pm = i.strip()[:a]f2 = open(s+"/"+pm+".txt","a+")f2.write(i)    f1.close()
f2.close()
#代碼結束

?第4關:文件的統計

編寫統計文件夾下不同文件類型的數量和大小的程序。

os模塊

os模塊為系統內置模塊,提供了對系統環境、文件、目錄等操作系統級的接口函數 listdir() 返回指定目錄下的所有文件和目錄名 path.isfile() 檢驗是否是一個文件 path.splitext()? 文件名和擴展名分離 os.path.getsize() 獲取文件大小

注意:上述函數需要將文件夾和文件的完整路徑作為參數

import os
wjzd={}
wjsize={}
lj="wjcl/src/test"
#代碼開始
l = os.listdir(lj)
for i in l:if ".gitkeep" in i:continueelse:a = os.path.splitext(i)b = os.path.getsize("wjcl/src/test/"+i)wjsize[a[1]] = wjsize.get(a[1],0)+bwjzd[a[1][1:]] = wjzd.get(a[1][1:],0)+1
#代碼結束  
lb=list(wjzd.items())
lb.sort()
lb2=list(wjsize.items())
lb2.sort()
for i in range(len(lb)):print("文件類型{}文件數{}文件大小{:.2f}KB".format(lb[i][0],lb[i][1],lb2[i][1]/1024))

第5關:文件的移動

編寫一個小程序,在test3文件夾下建立子文件夾,并根據文件類型將文件移動到相應的文件夾下。

os模塊

os模塊為系統內置模塊,提供了對系統環境、文件、目錄等操作系統級的接口函數。 listdir() 返回指定目錄下的所有文件和目錄名 mkdir() 創建目錄 rmdir() 刪除目錄 path.isfile() 檢驗是否是一個文件 path.splitext()? 文件名和擴展名分離 os.path.exists() 文件或文件夾是否存在

shulti模塊

shutil模塊是對os模塊的補充,主要針對文件的拷貝、刪除、移動、壓縮和解壓操作 rmtree(sdir) 刪除文件夾(包括所有子文件夾和文件) move(src, ddir) 移動文件到另一個文件夾

根據test3文件夾下文件的類型,在test3文件夾下建立相應的子文件夾,并將文件移動到相應的文件夾下。 具體來說,擴展名為.jpeg.jpg.png.jifi的文件移動到圖片子文件夾下,.mp3.wav移動到音頻文件夾下,.mp4.flv移動到視頻文件夾下,.txt.docx.pdf移動到文檔文件夾下。 提示:可以建立字典來指定文件夾和文件的對應關系

最后,需要在test3下建立圖片、文檔、音頻和視頻四個文件夾,并將文件按擴展名的對應關系移動到相應文件夾下 最后顯示如下

  1. ['ifs大熊貓.jpg', '基地1.jpg', '春熙路圖集1.jfif', '春熙路圖集2.jpeg', '春熙路圖集3.jfif', '杜甫草堂.png', '青城山.png']
  2. ['pq.flv', '七彩丹霞視頻.mp4', '云南十八怪_.mp4']
  3. ['學院設置.docx', '昆明.docx', '琵琶行并序.txt', '考題一.pdf', '考題四.pdf']
  4. ['add.wav', 'score.wav', '山歌好比春江水.mp3', '花兒尕戀手令.mp3']
import os
import shutil
wj={"圖片":".jpeg.jpg.png.jfif","文檔":".txt.docx.pdf","音樂":".mp3.wav","影像":".mp4.flv"}
lj1="wjcl/src/test2"
lj="wjcl/src/test3"
if os.path.exists(lj):shutil.rmtree(lj)  
shutil.copytree(lj1,lj)
#代碼開始
k=os.listdir(lj)
k.remove(".gitkeep")
for i in wj.keys():if not os.path.exists(lj+"/"+i):os.mkdir(lj+"/"+i)for i in k:wjm,kzm=os.path.splitext(i)if kzm in wj["圖片"]:shutil.move(lj+"/"+i,lj+"/"+"圖片")if kzm in wj["文檔"]:shutil.move(lj+"/"+i,lj+"/"+"文檔")if kzm in wj["音樂"]:shutil.move(lj+"/"+i,lj+"/"+"音樂")if kzm in wj["影像"]:shutil.move(lj+"/"+i,lj+"/"+"影像")#代碼結束
ml=os.listdir(lj)
ml.sort()
for x in ml:if x!=".gitkeep":wj=os.listdir(lj+"/"+x)wj.sort()print(wj)

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

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

相關文章

【CSND博客紀念】“創作紀念日:從靈感迸發到小有成就——我的CSND博客創作之旅”

&#x1f3a9; 歡迎來到技術探索的奇幻世界&#x1f468;?&#x1f4bb; &#x1f4dc; 個人主頁&#xff1a;一倫明悅-CSDN博客 ?&#x1f3fb; 作者簡介&#xff1a; C軟件開發、Python機器學習愛好者 &#x1f5e3;? 互動與支持&#xff1a;&#x1f4ac;評論 &…

記錄下git的基本操作

初始化git git init git clone 拉取各分支的最新代碼 git fetch 切換分支 git checkout 分支名 提交相關操作 git add . git commit -m “提交備注” 兩個一起 git commit -am “提交備注” 如果需要撤銷操作 git log 查詢日志,提交id git revert git revert HEAD 撤銷前一…

算法分析與設計復習__遞歸方程與分治

總結自&#xff1a;【算法設計與分析】期末考試突擊課_嗶哩嗶哩_bilibili 1.遞歸&#xff0c;遞歸方程 1.1遞歸條件: 1.一個問題的解可以分解為幾個子問題的解&#xff1b; 2.這個問題與分解之后的子問題&#xff0c;除了數據規模不同&#xff0c;求解思路完全一樣; 3.存在…

【面試干貨】一個數組的倒序

【面試干貨】一個數組的倒序 1、實現思想2、代碼實現 &#x1f496;The Begin&#x1f496;點點關注&#xff0c;收藏不迷路&#x1f496; 1、實現思想 創建一個新的數組&#xff0c;然后將原數組的元素按相反的順序復制到新數組中。 2、代碼實現 package csdn;public class…

高效微砂沉淀澄清設備工藝流程

諸城市鑫淼環保小編帶大家了解一下高效微砂沉淀澄清設備工藝流程 微砂循環重介速沉設備 微砂高速絮凝沉淀系統巧妙地將混凝、絮凝、沉淀、分離幾個過程優化組合到一個設備中&#xff0c;并引入“微砂”&#xff0c;提升了水中懸浮固體的絮凝效率和分離效率&#xff0c;同時&…

如何幫孩子學好編程

學習編程對于孩子來說是一項非常有益的技能&#xff0c;不僅可以培養孩子的邏輯思維能力&#xff0c;還可以提高孩子的問題解決能力和創造力。以下是一些建議&#xff0c;幫助孩子學好編程&#xff1a; 選擇適合孩子的編程語言和工具&#xff1a;根據孩子的年齡和興趣選擇合適的…

一個強大的在線解析網站,無需登錄,只用把視頻鏈接粘貼進去就能免費解析下載視頻。

TiQu.cc是什么&#xff1f; TiQu.cc是一個強大的在線工具&#xff0c;讓用戶可以從包括Facebook、VK、Twitter、Tiktok、Instagram等在內的100多個平臺下載他們喜愛的視頻。不論是音樂、電視節目、電影、短片還是個人上傳的內容&#xff0c;TiQu.cc都可以幫助您隨時隨地以離線…

ChatGPT 4o 使用案例之一

2024年GPT迎來重大更新&#xff0c;OpenAI發布GPT-4o GPT-4o&#xff08;“o”代表“全能”&#xff09; 它可以接受任意組合的文本、音頻和圖像作為輸入&#xff0c;并生成任意組合的文本、音頻和圖像輸出。它可以在 232 毫秒內響應音頻輸入&#xff0c;平均為 320 毫秒&…

把tif的值映射到shp柵格

目錄 問題描述代碼結果示例 問題描述 假如目前有一個&#xff08;多個&#xff09;tif文件和一個shp文件&#xff0c;想要把tif中每個像素的值集成到shp文件的新字段中。如果柵格和像素是一一對應的&#xff0c;問題將會變得非常簡單&#xff1a;直接把每個像素的值映射到每個…

【Python探索之旅】字典

字典的基本特性 創建字典 修改字典 添加鍵值對 刪除鍵值對 字典方法 遍歷字典 完結撒花? 前言 字典是 Python 中內建的一種具有彈性儲存能力的數據結構&#xff0c;可存儲任意類型對象&#xff0c;與序列使用整數索引不同&#xff0c;它使用鍵(key)進行索引。 通常任何不…

小白也會SQL:大模型改變交互方式(上)

在人工智能與自然語言處理交匯點&#xff0c;有一種技術正悄然改變與數據交互的方式——將日常語言轉化為精準SQL查詢。這一“text-to-sql”轉換任務&#xff0c;使非專業人士也能輕松駕馭復雜的數據庫操作&#xff0c;極大地拓寬了數據應用的邊界。 然而&#xff0c;現有前沿…

linux系統查看服務器硬件信息

1、查看服務器型號、序列號 # dmidecode|grep "System Information" -A9 | egrep "Manufacturer|Product|Serial" 2、查看主板型號 # dmidecode |grep -A16 "System Information$" 或 dmidecode -t1 3、查看BIOS信息 # dmidecode -t bios 4、…

學習大數據:論學習Spark的重要性

隨著科技的不斷發展&#xff0c;大數據已經成為了當今社會的熱門話題。大數據技術的出現&#xff0c;為我們提供了處理海量數據的新方法&#xff0c;使得我們能夠從這些數據中挖掘出有價值的信息。在眾多的大數據處理框架中&#xff0c;Apache Spark無疑是最為出色的一種。本文…

部分基于深度學習的主流目標檢測算法

文章目錄 Anchor-Based方法Two-stage目標檢測算法RCNNFast RCNNFaster RCNNFPN(理解為Faster R-CNN中的一個關鍵組件或改進模塊) One-stage目標檢測算法YOLOSSD Anchor-Free方法CornerNetCenterNetFSAFFCOSSAPD 基于transformer的方法DETR 常用數據集Reference 目標檢測是計算機…

vue嵌套路由

一、嵌套 children配置 1.父類路由 mymusic 2.子類路由 musicson 1.創建MusicSon組件 <template><div><p>從前和后來</p><p>唯一</p><p>運氣來的似有若無</p></div> </template><script>export defaul…

linux du 排除 某一個目錄 proc

Linux的du用法排除某個目錄_du -sh 排除目錄-CSDN博客 du -sh /* --exclude"*proc*"

通俗易懂的策略模式講解

什么是策略模式&#xff1f; 策略模式是一種設計模式&#xff0c;它允許你定義一系列的算法&#xff08;策略&#xff09;&#xff0c;并將每個算法封裝成一個對象。這樣&#xff0c;你可以輕松地切換不同的算法&#xff0c;而不需要改變原始代碼。 一個簡單的例子 假設你是…

韻搜坊 -- 前后端聯調實現搜索圖片

文章目錄 后端新建圖片類型Picture創建圖片接口類PictureController新建PictureQueryRequest創建Service類創建實現類PictureServiceImpl 前端添加接口獲取后端數據修改picture頁面內容添加文章&#xff0c;圖片的搜索功能修改查詢參數的獲取&#xff0c;實現查詢用戶功能 存在…

這10款安卓APP,簡直好用到爆!

AI視頻生成&#xff1a;小說文案智能分鏡智能識別角色和場景批量Ai繪圖自動配音添加音樂一鍵合成視頻http://AI視頻生成&#xff1a;小說文案智能分鏡智能識別角色和場景批量Ai繪圖自動配音添加音樂一鍵合成視頻 1.追書——追書神器 追書神器是小說追新大神&#xff0c;全網實…