python讀寫檔案練習

2021-09-25 23:52:28 字數 3294 閱讀 7098

1.請你通過檔案讀寫命令,讀取 photo1 裡的資料(提示見**區開頭)。

然後,新建名為「photo2」的(在同乙個資料夾),寫入讀到的資料。

這樣,我們就通過檔案讀寫的**,完成了的複製(而非滑鼠右鍵)。

with open('photo2.png','rb') as file:  # 以「rb」模式開啟

data = file.read()

with open('photo3.png','wb') as newfile: # 以「wb」模式寫入

newfile.write(data)

2.現在有這樣乙個叫scores.txt的檔案,裡面有赫敏、哈利、羅恩、馬爾福四個人的幾次魔法作業的成績。

但是呢,因為有些魔法作業有一定難度,教授不強制同學們必須上交,所以大家上交作業的次數並不一致。

羅恩 23 35 44

哈利 60 77 68 88 90

赫敏 97 99 89 91 95 90

馬爾福 100 85 90

希望你來統計這四個學生的魔法作業的總得分,然後再寫入乙個txt檔案。注意,這個練習的全程只能用python。

file1 = open('scores.txt','r',encoding='utf-8') 

file_lines = file1.readlines()

file1.close()

final_scores =

for i in file_lines:

data =i.split()

sum = 0 # 先把總成績設為0

for score in data[1:]: # 遍歷列表中第1個資料和之後的資料

sum = sum + int(score) # 然後依次加起來,但分數是字串,所以要轉換

result = data[0]+str(sum)+'\n' # 結果就是學生姓名和總分

print(result)

print(final_scores)

sum1 = open('winner.txt','w',encoding='utf-8')

sum1.writelines(final_scores)

sum1.close()

3.現在,我們計畫對課堂上得到的「winner」文件再行處理一下。

讓學員的成績從高到低排列,然後放到新文件「winner_new.txt」。

# 下面注釋掉的**,皆為檢驗**(驗證每一步的思路和**是否達到目標,可解除注釋後執行)。

file1 = open('winner.txt','r',encoding='utf-8')

file_lines = file1.readlines()

file1.close()

dict_scores = {}

list_scores =

final_scores =

# print(file_lines)

# print(len('\n'))

# 列印結果為:['羅恩102\n', '哈利383\n', '赫敏570\n', '馬爾福275\n']

# 經過測試,發現'\n'的長度是1。所以,名字是「第0位-倒數第5位」,分數是「倒數第4位-倒數第二位」。

# 再根據「左取右不取」,可知:name-[:-4],score-[-4:-1]

for i in file_lines: # i是字串。

print(i)

name = i[:-4] # 取出名字(注:字串和列表一樣,是通過偏移量來獲取內部資料。)

score = int(i[-4:-1]) # 取出成績

print(name)

print(score)

dict_scores[score] = name # 將名字和成績對應存為字典的鍵值對(注意:這裡的成績是鍵)

# print(list_scores)

list_scores.sort(reverse=true) # reverse,逆行,所以這時列表降序排列,分數從高到低。

# print(list_scores)

for i in list_scores:

result = dict_scores[i] + str(i) + '\n'

#print(dict_scores[i])

# print(result)

print(final_scores) # 最終結果

winner_new = open('winner_new.txt','w',encoding='utf-8')

winner_new.writelines(final_scores)

winner_new.close()

記錄:(1)自己做的時候在考慮如何根據已排序好的列表,依次輸出字典的值。最後終於想出來了,就是對列表遍歷(因為這時列表的成績已經是按高低排序的),然後將字典對應的鍵(這裡就是每個人的名字)輸出dict_scores[i],然後將名字和分數拼接,加入乙個新的列表final_scores = 即可。

(2)遇到的第二個問題是:在寫入檔案的時候,我用的是winner_new.write(final_scores),然後出現報錯,因為write只能寫入字串,不能寫入列表。因此這裡要用writelines即可。

4.練習要求

語文老師將一些古詩存在txt文件裡,一句一行。

最近,他計畫抽一些古詩,自己設定一些空來讓學生默寫。

請你用**幫老師完成這項工作(只要處理了乙個文件,加上迴圈就能處理無數個文件了)。

錦瑟[唐] 李商隱

錦瑟無端五十弦,

一弦一柱思華年。

莊生曉夢迷蝴蝶,

望帝春心託杜鵑。

滄海月明珠有淚,

藍田日暖玉生煙。

此情可待成追憶,

只是當時已惘然。

list_test = ['一弦一柱思華年。\n','只是當時已惘然。\n']  # 將要默寫的詩句放在列表裡。

with open ('poem2.txt','r') as f:

lines = f.readlines()

print(lines)

with open('poem2.txt','w') as new:

for line in lines:

if line in list_test: # 屬於默寫列表中的句子,將其替換成橫線。

new.write('____________。\n')

else:

new.write(line)

python 檔案讀寫練習

練習包括 讀取與寫入 usr bin env python coding utf 8 time 2017 10 30 0030 08 58 file lianxi2.py 正向排序 import codecs l 1,5,3,8,2,4 l.sort 寫入檔案 with codecs.open 1....

python練習 讀寫檔案

對於不同的作業系統,檔案目錄會有不同,對於linux而言,萬事萬物皆檔案 對windows而言,檔案讀寫也很重要。import os 拼接路徑 os.path.join usr bin spam 返回路徑 usr bin spam 兩個倒斜槓等價於乙個正斜槓 獲得當前工作目錄 os.getcmd 相...

1 python檔案讀寫練習

今天學習了python的檔案讀寫功能,練習一下。開啟原日誌檔案 fp open r log.txt 建立新檔案用於存放日誌整理後的結果 fs open r result.txt w 宣告乙個字典,用於存放日誌裡的內容 d 遍歷原日誌檔案的 for line in fp.readlines 如果讀取的...