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 如果讀取的...