【頭歌-Python】文件自學引導

禁止轉載,原文:https://blog.csdn.net/qq_45801887/article/details/139258793
參考教程:B站視頻講解——https://space.bilibili.com/3546616042621301

  • 如果代碼存在問題,麻煩大家指正 ~ ~
  • 有幫助麻煩點個贊 ~ ~

    文件自學引導

    • 第1關:讀文件全部內容到一個字符串
    • 第2關:讀文件前n個字符
    • 第3關:逐行讀取并輸出文件內容
    • 第4關:讀取文件到列表中
    • 第5關:讀取文件中的數據到二維列表
    • 第6關:將唐詩寫入到文件中

第1關:讀文件全部內容到一個字符串

任務描述
本關任務:編寫一個能讀文件全部內容到一個字符串的小程序。

相關知識
為了完成本關任務,你需要掌握:

  1. 文件的打開
  2. 讀文件到字符串

文件的打開
內置函數open(file, mode='r', encoding=None)可以打開 file 并返回對應的文件對象(file object)
file 是一個可以帶路徑的文件名,mode 用于指定打開文件的模式。默認值是 'r' ,表示以文本模式打開并讀取文件。其他常見模式有:寫入模式 'w' (已存在文件會被清空)、獨占創建模式 'x' 、追加寫入模式 'a'
encoding用于在文本模式下指定編碼格式,默認根據當前平臺決定編碼格式。
當使用 open() 以文本模式 ('w', 'r', 'wt', 'rt' 等) 打開文件時,它將返回 io.TextIOBase的一個子類io.TextIOWrapper

file = '/data/bigfiles/靜夜思.txt'
f = open(file, mode='r', encoding='utf-8')  # f是為文件對象命名
print(f)

輸出:

<_io.TextIOWrapper name='靜夜思.txt' mode='r' encoding='utf-8'>

建議將open()函數用上下文管理器容器中,減少遇到異常關閉文件出錯的問題。

file = '/data/bigfiles/靜夜思.txt'
with open(file, mode='r', encoding='utf-8') as f:  # 文件對象命名放在as后面print(f)  # 操作文件的語句放在縮進的語句塊中,離開縮進就關閉文件

輸出:

<_io.TextIOWrapper name='靜夜思.txt' mode='r' encoding='utf-8'>

讀文件到字符串

  1. read(size) 無參數或參數為-1時,讀取全部文件內容;
file = '/data/bigfiles/靜夜思.txt'
with open(file, mode='r', encoding='utf-8') as f:  # 為文件對象命的名放在as后面txt = f.read()  # 將文件全部內容讀入到字符串txt中
print(txt)

輸出:

靜夜思
李白
床前明月光,疑是地上霜。
舉頭望明月,低頭思故鄉。

編程要求
根據提示,在右側編輯器補充代碼,輸出文件“出塞.txt”全部字符。文件路徑和文件名為:‘/data/bigfiles/出塞.txt

測試說明
平臺會對你編寫的代碼進行測試:

測試輸入:

預期輸出:

           出塞王昌齡()
秦時明月漢時關,萬里長征人未還。
但使龍城飛將在,不教胡馬度陰山。

提示:

  1. 每行末有一個換行符“\n

本單元可能用到的文件下載:
出塞.txt
8.1 靜夜思.txt
唐詩三百首 (2022).txt
7.8 唐詩三百首.txt
8.2 score.csv
8.5 score.csv

開始你的任務吧,祝你成功!

參考代碼

# 禁止轉載,原文:https://blog.csdn.net/qq_45801887/article/details/139258793
# 參考教程:B站視頻講解 https://space.bilibili.com/3546616042621301
with open('/data/bigfiles/出塞.txt', mode='r', encoding='utf-8') as f: print(f.read())

第2關:讀文件前n個字符

任務描述
本關任務:編寫一個能讀文件前n個字符的小程序。

相關知識
為了完成本關任務,你需要掌握:

  1. 讀文件到字符串

讀文件到字符串
2. read(size) 當參數size為大于或等于0的整數時,讀取size個字符。

file = '/data/bigfiles/靜夜思.txt'
with open(file, mode='r', encoding='utf-8') as f:  # 為文件對象命的名放在as后面txt = f.read(3)  # 將文件前3個字符讀入到字符串txt中
print(txt)

輸出:

靜夜思

編程要求
根據提示,在右側編輯器補充代碼,輸入一個正整數n,輸出“出塞.txt”前n個字符。

測試說明
平臺會對你編寫的代碼進行測試:

測試輸入:

3

預期輸出:

靜夜思

測試輸入:

13

預期輸出:

靜夜思
李白
床前明月光,

提示:

  1. 每行末有一個換行符“\n

開始你的任務吧,祝你成功!

參考代碼

# 禁止轉載,原文:https://blog.csdn.net/qq_45801887/article/details/139258793
# 參考教程:B站視頻講解 https://space.bilibili.com/3546616042621301
with open('/data/bigfiles/出塞.txt', mode='r', encoding='utf-8') as f: print(f.read(int(input())))

第3關:逐行讀取并輸出文件內容

任務描述
本關任務:編寫一個能逐行讀取并輸出文件內容的小程序。

相關知識
為了完成本關任務,你需要掌握:

  1. 讀文件到字符串
  2. 文件指針

讀文件到字符串

  1. f.readline() 從文件中讀取單行數據;字符串末尾保留換行符(\n),空行使用 ‘\n’ 表示,該字符串只包含一個換行符。
    f.readline() 返回空字符串時,表示已經到達了文件末尾。
file = '/data/bigfiles/靜夜思.txt'
with open(file,'r',encoding = 'utf-8') as poem:  # 打開文件創建文件對象,命名為poemwhile txt := poem.readline():  # 逐行讀文件,直至文件結束print(txt.strip())         # 去除行末的換行符后輸出當前讀到的字符串

輸出:

靜夜思
李白
床前明月光,疑是地上霜。
舉頭望明月,低頭思故鄉。
  1. f.readline(size) 當參數size為大于或等于0的整數時,從指針所在處向后最多讀取當前行的前size個字符,當前行剩余字符少于size時,讀取到行末。

編程要求
根據提示,在右側編輯器補充代碼,輸入一個文件名,用readline()方法逐行讀取并輸出文件內容,輸出時去除每行末的換行符。

測試說明
平臺會對你編寫的代碼進行測試:

測試輸入:

靜夜思.txt

預期輸出:

靜夜思
李白
床前明月光,疑是地上霜。
舉頭望明月,低頭思故鄉。

開始你的任務吧,祝你成功!

參考代碼

# 禁止轉載,原文:https://blog.csdn.net/qq_45801887/article/details/139258793
# 參考教程:B站視頻講解 https://space.bilibili.com/3546616042621301
file = '/data/bigfiles/' + input()
with open(file,'r',encoding = 'utf-8') as f:for line in f.readlines(): print(line.strip()) 

第4關:讀取文件到列表中

任務描述
本關任務:編寫一個能讀取文件到列表中的小程序。

相關知識
為了完成本關任務,你需要掌握:

  1. 讀文件到列表

讀文件到列表

  1. readlines()
    無參數時,讀取文件全部數據,返回一個列表,列表中每個元素是文件對象中的一行數據,包括行末的換行符’\n’。
file = '/data/bigfiles/靜夜思.txt'
with open(file, 'r', encoding='utf-8') as poem:  # 打開文件創建文件對象,命名為poempoem_ls = poem.readlines()  # 讀取文件內容到列表
print(poem_ls)

輸出:

['靜夜思\n', '李白\n', '床前明月光,疑是地上霜。\n', '舉頭望明月,低頭思故鄉。']
  1. readlines(hint)
    當參數hint為大于或等于0的整數時,返回文件從頭到第hint個字符所在的行末。
file = '/data/bigfiles/靜夜思.txt'
with open(file, 'r', encoding='utf-8') as poem:  # 打開文件創建文件對象,命名為poempoem_ls = poem.readlines(10)  # 讀取文件,到第10個字符所在的行末
print(poem_ls)

輸出:

['靜夜思\n', '李白\n', '床前明月光,疑是地上霜。\n']

編程要求
根據提示,在右側編輯器補充代碼,輸入一個文件名,將該文件內容轉為列表輸出。

測試說明
平臺會對你編寫的代碼進行測試:

測試輸入:

靜夜思.txt

預期輸出:

['靜夜思\n', '李白\n', '床前明月光,疑是地上霜。\n', '舉頭望明月,低頭思故鄉。']

提示:

  1. 每行末有一個換行符“\n

開始你的任務吧,祝你成功!

參考代碼

# 禁止轉載,原文:https://blog.csdn.net/qq_45801887/article/details/139258793
# 參考教程:B站視頻講解 https://space.bilibili.com/3546616042621301
with open(input(), 'r', encoding='utf-8') as f:print(f.readlines())

第5關:讀取文件中的數據到二維列表

任務描述
本關任務:編寫一個能讀取文件中的數據到二維列表的小程序。

相關知識
為了完成本關任務,你需要掌握:

  1. 字符串切分
  2. 遍歷文件轉二維列表

字符串切分

  1. txt.split(sep)
    根據分隔符sep對字符串txt進行切分,返回一個列表。
row = '姓名,C,Java,Python,C#\n'
print(row.strip())
# 去除行末換行符,姓名,C,Java,Python,C#
print(row.strip().split(','))  # 去除換行符后根據逗號切分為列表
# ['姓名', 'C', 'Java', 'Python', 'C#']

遍歷文件
雖然readlines()方法可以將文件讀取到二維列表中,但其元素仍為字符串。
很多存放數據的文件中每行數據是用逗號或空格分隔的,可以直接切分為列表,再加入到列表中,構成二維列表。
對于這樣的需求,建議使用遍歷文件對象的方法。

file = '../csv/8.2 score.csv'
score_ls = []  # 創建一個空列表
with open(file, 'r', encoding='utf-8') as fr:  # 打開文件創建文件對象,命名為poemfor row in fr:                    # 遍歷文件對象,row為當前行lst = row.strip().split(',')  # 當前行切分為一個列表score_ls.append(lst)          # 將當前行切分得到的列表附加到score_ls中
print(score_ls)  # 輸出二維列表

列表推導式方法:

file = '../csv/8.2 score.csv'
with open(file, 'r', encoding='utf-8') as fr:  # 打開文件創建文件對象,命名為poemscore_ls = [row.strip().split(',') for row in fr]                    # 遍歷文件對象,row為當前行
print(score_ls)  # 輸出二維列表

輸出:

[['姓名', 'C', 'Java', 'Python', 'C#'], 
['羅明', '95', '96', '85', '63'], 
['朱佳', '75', '93', '66', '85'],
['李思', '86', '76', '96', '93'], 
['鄭君', '88', '98', '76', '90'], 
['王雪', '99', '96', '91', '88']]

編程要求
根據提示,在右側編輯器補充代碼,輸入一個文件名,先讀輸出文件的第一行,再將該文件其他內容轉為列表輸出。

測試說明
平臺會對你編寫的代碼進行測試:

測試輸入:

score.csv

預期輸出:

[['姓名', 'C', 'Java', 'Python', 'C#'], ['羅明', '95', '96', '85', '63'], ['朱佳', '75', '93', '66', '85'], ['李思', '86', '76', '96', '93'], ['鄭君', '88', '98', '76', '90'], ['王雪', '99', '96', '91', '88']] 

提示:

  1. 每行末有一個換行符“\n

開始你的任務吧,祝你成功!

參考代碼

# 禁止轉載,原文:https://blog.csdn.net/qq_45801887/article/details/139258793
# 參考教程:B站視頻講解 https://space.bilibili.com/3546616042621301
with open('/data/bigfiles/'+input(), 'r', encoding='utf-8') as f:ls = [line.strip().split(',') for line in f]print(ls)

第6關:將唐詩寫入到文件中

任務描述
本關任務:編寫一個能將指定序號的唐詩寫入到單獨的文件中的小程序。

相關知識
為了完成本關任務,你需要掌握:

  1. 文件寫入

文件寫入

  1. f.write(s)
    將字符串s寫入到文件對象f中。
file = '233李白:靜夜思.txt'
poem = '靜夜思\n李白\n床前明月光,疑是地上霜。\n舉頭望明月,低頭思故鄉。\n'
with open(file, 'w', encoding='utf-8') as fw:  # 打開文件創建文件對象,命名為poemfw.write(poem)

編程要求
根據提示,在右側編輯器補充代碼,輸入一個3位數字字符表示的詩的序號,從文件“/data/bigfiles/唐詩三百首.txt”中讀出指定序號的詩句,再將該詩單獨寫入到以該詩序號開始的行為文件名的文件中。

測試說明
平臺會對你編寫的代碼進行測試:

測試輸入:

237

預期輸出:
創建文件:

237劉長卿:送靈澈.txt

文件內容如下:

237劉長卿:送靈澈蒼蒼竹林寺,杳杳鐘聲晚。
荷笠帶斜陽,青山獨歸遠。

提示:

  1. 每行末有一個換行符“\n

開始你的任務吧,祝你成功!

參考代碼

# 禁止轉載,原文:https://blog.csdn.net/qq_45801887/article/details/139258793
# 參考教程:B站視頻講解 https://space.bilibili.com/3546616042621301
def get_poem(file):"""讀唐詩300首,定位到用戶輸入的序號的詩,將該首詩讀取為一個字符串,返回去除末尾空白字符的字符串"""poem = '' poet_flag = Falsewith open(file, 'r', encoding='utf-8') as f: for line in f:if  line[:3] == str(num):poem = poem + linepoet_flag = Trueelif line[0] in '0123456789': poet_flag = Falseelif poet_flag:poem = poem + linereturn poemdef write_poem(line):"""參數是包含指定序號詩句的字符串,提取詩的標題行做為要寫入的文件名,將全部詩句按順序寫入到文件中,返回詩的標題行"""title = line.split(maxsplit=1)[0]with open(title+'.txt', 'w', encoding='utf-8') as f:f.write(line)return titledef check_file(file):"""參數是新創建的文件名,讀取新創建并寫入詩句的文件,檢查是否寫入成功,無返回值"""with open(file, 'r', encoding='utf-8') as fr:print(fr.read())            # 文件讀取為一個字符串并輸出if __name__ == '__main__':filename = '/data/bigfiles/唐詩三百首.txt'  # 源文件路徑num = input()  # 輸入序號poem_str = get_poem(filename)     # 讀取指定序號的詩為字符串file_title = write_poem(poem_str)  # 字符串寫入文件,并返回標題check_file(file_title+'.txt')     # 查看寫入的文件,輸出詩的內容

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

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

相關文章

算數運算符

算術運算符是用于數值類型變量計算的運算符。 它的返回結果是數值。 賦值符號 關鍵知識點&#xff1a;先看右側&#xff0c;再看左側&#xff0c;把右側的值賦值給左側的變量。 附上代碼&#xff1a; string myName "唐唐"; int myAge 18; float myHeight 177.5…

202312青少年軟件編程(Python)等級考試試卷(四級)

第 1 題 【單選題】 下列有關分治算法思想的描述不正確的是?(?) A :將問題分解成的子問題具有相同的模式 B :將問題分解出的各個子問題相互之間有公共子問題 C :當問題足夠小時,可以直接求解 D :可以將子問題的求解結果合并成原問題的解 正確答案:B 試題解析: 第 2…

ADIL簡單測試實例

參考資料&#xff1a;https://blog.csdn.net/geyichongchujianghu/article/details/130045373這個連接是Java的代碼&#xff0c;我根據它的鏈接寫了一個kotlin版本的。 AIDL&#xff08;Android Interface Definition Language&#xff09;是Android平臺上用于進程間通信&…

AI辦公自動化:kimi批量新建文件夾

工作任務&#xff1a;批量新建多個文件夾&#xff0c;每個文件夾中的年份不一樣 在kimi中輸入提示詞&#xff1a; 你是一個Python編程專家&#xff0c;要完成一個編寫關于錄制電腦上的鍵盤和鼠標操作的Python腳本的任務&#xff0c;具體步驟如下&#xff1a; 打開文件夾&…

FFmpeg編解碼的那些事(1)

看了網上很多ffmpeg的編解碼的文章和代碼&#xff0c;發現有很多文章和代碼都過時了&#xff0c;主要還是ffmpeg有很多接口都已經發生變化了。 這里簡單說一下&#xff0c;什么是編碼和解碼。 1.視頻編碼 對于視頻來說&#xff0c;可以理解為多張&#xff08;rgb或者yuv&…

Python散點圖矩陣代碼模版

本文分享Python seaborn實現散點圖矩陣代碼模版&#xff0c;節選自&#x1f449;嫌Matplotlib繁瑣&#xff1f;試試Seaborn&#xff01; 散點圖矩陣&#xff08;scatterplot matrix&#xff09;展示原始數據中所有變量兩兩之間關系&#xff0c;可以規避單一統計指標的偏差&…

二分查找算法詳講(三種版本寫法)原創

介紹: 二分查找算法&#xff08;Binary Search&#xff09;是一種在有序數組中查找目標元素的算法。 它的基本思想是通過將目標元素與數組的中間元素進行比較&#xff0c;從而將搜索范圍縮小一半。 如果目標元素等于中間元素&#xff0c;則搜索結束&#xff1b;如果目標元素小…

Neural Filters:照片恢復

Ps菜單&#xff1a;濾鏡/Neural Filters/恢復/照片恢復 Neural Filters/RESTORATION/Photo Restoration 照片恢復 Photo Restoration借助 AI 強大功能快速恢復舊照片&#xff0c;提高對比度、增強細節、消除劃痕。將此濾鏡與著色相結合以進一步增強效果。 “照片恢復”濾鏡利用…

Scikit-Learn隨機森林

Scikit-Learn隨機森林 1、隨機森林1.1、集成學習1.2、Bagging方法1.3、隨機森林算法1.4、隨機森林的優缺點2、Scikit-Learn隨機森林回歸2.1、Scikit-Learn隨機森林回歸API2.2、隨機森林回歸實踐(加州房價預測)1、隨機森林 隨機森林是一種由決策樹構成的集成算法,它在大多情況…

mac安裝的VMware虛擬機進行橋接模式配置

1、先進行網絡適配器選擇&#xff0c;選擇橋接模式 2、點擊網絡適配器 設置... 3、選擇WiFi&#xff08;我使用的是WiFi&#xff0c;所以選擇這個&#xff09;&#xff0c;注意看右邊的信息&#xff1a;IP和子網掩碼&#xff0c;后續配置虛擬機的ifcfg-ens文件會用到 4、編輯if…

【論文閱讀筆記】The Google File System

1 簡介 Google File System (GFS) 是一個可擴展的分布式文件系統&#xff0c;專為快速增長的Google數據處理需求而設計。這篇論文發表于2003年&#xff0c;此前已在Google內部大規模應用。 GFS不僅追求性能、可伸縮性、可靠性和可用性等傳統分布式文件系統的設計目標&#xf…

benchmark::State benchmark 原理

benchmark::State benchmark::State是Google Benchmark庫中的一個核心類&#xff0c;用于管理單個基準測試的狀態信息和控制基準測試的執行流程。在編寫基準測試時&#xff0c;這個類提供了一套豐富的接口&#xff0c;允許用戶獲取測試循環的次數、調整測試參數、測量時間等&a…

P9 【力扣+知識點】【算法】【二分查找】C++版

【704】二分查找&#xff08;模板題&#xff09;看到復雜度logN&#xff0c;得想到二分 給定一個 n 個元素有序的&#xff08;升序&#xff09;整型數組 nums 和一個目標值 target &#xff0c;寫一個函數搜索 nums 中的 target&#xff0c;如果目標值存在返回下標&#xff0…

企業微信hook接口協議,ipad協議http,語音轉文字

語音轉文字 參數名必選類型說明uuid是String每個實例的唯一標識&#xff0c;根據uuid操作具體企業微信msgid是int要轉文字的語音消息id 請求示例 {"uuid":"a4ea6a39-4b3a-4098-a250-2a07bef57355","msgid":1063645 } 返回示例 {"data&…

電源模塊測試系統怎么測試輸入電壓范圍?

在現代電子設備中&#xff0c;電源模塊的性能直接影響著整個系統的穩定性和效率。其中&#xff0c;電源輸入電壓范圍是指電源能夠接受的輸入電壓的最小值和最大值&#xff0c;它是確保電源正常工作的重要參數。為了提高測試效率和精度&#xff0c;自動化的測試方法逐漸取代了傳…

【Game】Rumble Heroes

文章目錄 1 英雄2 守護獸3 符文4 祝福5 陣容推薦6 Boss7 兌換碼 1 英雄 &#xff08;1&#xff09;力量 神話英雄 圣騎士-烏瑟爾 傳說英雄 雙刀-宮本武藏死亡騎士-阿薩斯冰霜騎士-亞瑟疾風焰刃-緣壹熊貓武僧-阿寶 史詩英雄 大劍-克勞德狂戰士-奎托斯魔山-克里剛獵人-奈辛瓦里 稀…

寶塔部署Java+Vue前后端分離項目

1. 服務器 服務器選擇Linux的CentOS7的版本 2. 寶塔Linux面板 2.1 百度搜索寶塔 2.2 進去之后點擊立即免費安裝 2.3 選擇Linux在線安裝&#xff0c;輸入服務器信息進行安裝(也可以選擇其他方式) 安裝完成之后會彈一個寶塔的應用面板&#xff0c;并附帶有登錄名稱和密碼&…

多模態大模型:系統、趨勢與問題

引言 多模態大模型是當今人工智能領域的熱門方向之一。它不僅能處理文本&#xff0c;還能理解和生成圖像、視頻、語音等多種模態的數據。這種能力使得多模態大模型在自然語言處理、計算機視覺等多個領域展示出巨大的潛力和應用價值。那么&#xff0c;多模態大模型是如何訓練出…

AI菜鳥向前飛 — LangChain系列之十五 - Agent系列:從現象看機制(中篇)一個Agent的“旅行”

Agent基本架構 先談談Agent基本架構概念&#xff0c;如果看得云里霧里&#xff0c;等看完本篇之后&#xff0c;再回頭看就會豁然開朗的&#xff0c;而我盡量寫得更易懂&#xff1a; &#xff09; 這里面會穿插著上一篇的內容&#xff0c;請大家記得往回翻翻&#xff0c;傳送門&…

MySQL 慢查詢優化指南

MySQL 慢查詢優化指南 在現代數據庫管理中&#xff0c;性能優化是一個不可忽視的重要環節。尤其是對于高并發、大數據量的應用&#xff0c;慢查詢可能會成為系統的性能瓶頸。本文將介紹如何查看和優化 MySQL 的慢查詢&#xff0c;幫助你提高數據庫性能。 一、什么是慢查詢&am…