Python的檔案讀寫
阿新 • • 發佈:2019-02-16
import time
def main():
fs = open('hello.txt', 'r', encoding='utf-8') # 把‘r’換成‘w’就是寫檔案
# 表示開啟當前路徑下檔案‘hello.txt’
# content = fs.read()
# print(content)
# for line in fs: # 一次讀一行
# print(line, end = '')
# time.sleep(0.5)
mylist = fs.readlines()
print(mylist)
fs.close()
# 寫檔案
# fs.write('彈木吉他抒情一些\n')
# fs.write('可回憶騷動一整夜\n')
# fs.write('寒冷卻下不了雪\n')
# 用with讀取檔案,如果在with下出現錯誤導致程式崩潰,就會退出,不會影響其他位置的程式
# 輸入檔案路徑也可以,.表示當前路徑,..表示上一級路徑
with open('./abc/hello.txt', 'r', encoding='utf-8') as fs:
mylist = fs.readlines
for line in mylist:
print(line, end='')
time.sleep(1)
if __name__ == '__main__':
main()
異常機制 - 處理程式在執行過程中出現的意外狀況的手段
因為不是所有的問題都能夠在寫程式除錯程式的時候就能發現
import time
def main():
try: # 把要讀取的檔案放到try裡面保護起來,讓檔案即使讀取出現錯誤也能夠繼續執行後面的程式碼
with open('./abc/hello.txt', 'r', encoding= 'utf-8') as fs:
mylist = fs.readlines()
for line in mylist:
print(line, end='')
time.sleep(1)
except FileNotFoundError: # 捕獲檔案異常
print('指定的檔案無法開啟.')
# except IOError:
# pring('讀寫檔案時出現錯誤.')
# except FileNotFoundError as e:
# print(e) 打印出現錯誤的檔案
# print('指定的檔案無法開啟')
print('程式執行結束.')
if __name__ == '__main__':
main()
把1-100,101-1000,1001-10000的素數分別放入三個資料夾
from math import sqrt
def is_prime(n):
assert n > 0 # 檢查n是否是有效數,無效則程式報異常不執行
for factor in range(2, int(sqrt(n)) + 1):
if n % factor == 0:
return False
return True if n != 1 else False
def main():
filenames = ('a.txt', 'b.txt', 'c.txt')
fs_list = []
try: # 我們也可以把可能出狀況(在執行時有風險)的程式碼放到try程式碼塊來執行
for filename in filenames:
fs_list.append(open(filename, 'w', encoding='utf-8'))
for number in range(1, 10000):
if is_prime(number):
if number < 100:
fs_list[0].write(str(number) + '\n')
elif number < 1000:
fs_list[1].write(str(number) + '\n')
else:
fs_list[2].write(str(number) + '\n')
except IOError: # 如果try中出現了狀況就通過except來捕獲錯誤(異常)進行對應的處理
print('讀寫檔案發生錯誤')
except FileNotFoundError: # except可以寫多個分別用於處理不同的異常狀況
pass
# except BaseException: 處理所有的異常狀況
# pass
# else: 如果沒有出狀況,那麼可以把無風險的程式碼放到else中執行
# for number in range(1, 10000):
# if is_prime(number):
# if number < 100:
# fs_list[0].write(str(number) + '\n')
# elif number < 1000:
# fs_list[1].write(str(number) + '\n')
# else:
# fs_list[2].write(str(number) + '\n')
finally:
# 釋放檔案資源,不管程式正常還是異常,最後這裡的程式碼一定會執行,保證資源釋放
# 所以此處是最好的釋放外部資源的位置,因為這裡的程式碼總是會執行
for fs in fs_list:
fs.close
print('操作完成!')
if __name__ == '__main__':
main()