2019-09-19-22:11:33 今天是自學Python的第九天 學的內容是有關文件操作的,如:r、w、a、rb、wb、ab、r+、w+、a+等 有大牛幫我看一下我的代碼第一個有沒有什麼弊端嗎?我感覺好像沒有,但是看視頻時,說不建議這樣做 ...
2019-09-19-22:11:33
今天是自學Python的第九天
學的內容是有關文件操作的,如:r、w、a、rb、wb、ab、r+、w+、a+等
有大牛幫我看一下我的代碼第一個有沒有什麼弊端嗎?我感覺好像沒有,但是看視頻時,說不建議這樣做
一.重要知識點
文件操作:
1. r
讀取完的文件句柄⼀定要關閉.f.close()
2. w
寫的時候註意.如果沒有文件.則會創建文件,如果文件存在.則將原件中原來的內容刪除,再寫入新內容
寫入是從游標處開始寫入
3. a
此模式下,寫入的內容會追加到文件末尾
4. r+
讀寫模式.必須先讀後寫
需要移動游標進行反覆讀寫
註意:在r+模式下.如果讀取了內容.不論讀取內容多少.游標顯示的是多少.
再寫入或者操作文件的時候都是在結尾進行的操作.
5. w+(很少用)
6. a+(此模式下不管是先讀還是後讀都無法讀取內容)
7. b bytes 讀寫操作的是位元組. 用在非文本上
8. seek() 移動游標到xx位置,移動的單位是byte
開頭: seek(0), 末尾: seek(0,2)
9. 文件修改
創建新文件. 把修改後的內容寫入新文件. 刪除老文件. 重命名新文件
import os
os.remove("")刪除文件
os.rename("源文件", "新文件名") 重命名文件
for line in f:
line 一行數據
with open("文件名") as f:
不需要關閉文件句柄,會自動關閉
二.錯誤總結
1.for迴圈和while迴圈嵌套問題
lst=[5,2,8,11,9,10,21,3,13]
i=0
while i<len(lst):
for el in range(len(lst)-1):
if lst[el]>lst[el+1]:
lst[el],lst[el+1]=lst[el+1],lst[el]
i=i+1
print(lst)
#上面代碼是自己敲的,好像沒錯,但是看視頻說下麵的方法比較適合,有點不懂.因為我覺得下麵的代碼我容易忘把i=0放進for迴圈下
lst=[5,2,8,11,9,10,21,3,13]
i=0 #沒考慮到要把i=0放進for迴圈中去
for el in range(len(lst)):
while i<len(lst)-1:
if lst[i]>lst[i+1]:
lst[i],lst[i+1]=lst[i+1],lst[i]
i=i+1
print(lst)
#不同迴圈還是沒有考慮到嵌套之間的關係
解決方法:要再瞭解不同迴圈的用法,然後總結它們之間的聯繫.
lst=[5,2,8,11,9,10,21,3,13]
i=0
while i<len(lst):
for el in range(len(lst)-1):
if lst[el]>lst[el+1]:
lst[el],lst[el+1]=lst[el+1],lst[el]
i=i+1
print(lst)
lst=[5,2,8,11,9,10,21,3,13]
for el in range(len(lst)):
i=0
while i<len(lst)-1:
if lst[i]>lst[i+1]:
lst[i],lst[i+1]=lst[i+1],lst[i]
i=i+1
print(lst)