檔案讀取和寫入

2021-10-07 16:59:20 字數 3432 閱讀 7293

open()返回乙個檔案物件,open(filename,mode)

f = open('workfile','w')
第乙個引數是包含檔名的字串,第二個引數可以是包含一些字元的字串

'r':僅讀取檔案, 'w':僅寫入檔案,'a'開啟檔案以進行新增的模式

'r+'開啟檔案進行讀取和寫入,模式引數是可選的。'r'如果省略,將被假定。

'b'附加模式的檔案將以二進位制模式開啟。此模式應用於所有不包含文字的檔案。

如果不使用with關鍵字,則應呼叫發f.close(),關閉檔案並立即釋放檔案使用的所有系統資源。

如何讀取純文字的檔案:

def main():

f = open(' 檔名', 'r')

print(f.read())

f.close()

if __name__ == '__main__':

main()

open函式指定的檔案不存在或者無法開啟,會引起異常狀況,導致程式崩潰,我們可以用python的異常機制對可能在執行時發生狀況的**進行適當的處理:

def main():

f = none

try:

f =open('c:\dafef\desktop2916734751.txt', 'r')

print(f.read())

except filenotfounderror:

print('無法開啟指定的檔案')

except lookuperror:

print('指定了未知的編碼')

except unicodedecodeerror:

print('讀取檔案時解碼錯誤')

finally:

if f:

f.close()

if __name__ == '__main__':

main()

用with處理,在處理檔案時,最好使用關鍵字,即使在某個時候引發了異常,檔案在其套件完成後也會正確關閉,使用with語句,相對於try-finally塊短得多。

def main():

try:

with open('c:\dafef\desktop2916734751.txt', 'r') as f:

print(f.read())

except filenotfounderror:

print('無法開啟指定的檔案')

except lookuperror:

print('指定了未知的編碼')

except unicodedecodeerror:

print('讀取檔案時解碼錯誤')

if __name__ == '__main__':

main()

在try**塊的後面跟上乙個或多個except來捕獲可能出現的異常情況。

除了read方法讀取以外還可以用for-in迴圈逐行讀取和readlines將檔案按行讀取到乙個列表容器中:

import time

def main():

with open(' ','r')as f:

print(f.read())

#for in 逐行讀取

with open('','r') as f:

for line in f:

print(line, end='')

time.sleep(0.5)

print()

#讀取檔案按行讀取到列表中

with open('','r') as f:

lines = f.readlines()

print(lines)

if __name__ == '__main__':

main()

寫檔案時將檔案模式設定為'w'

如何將1-100間的素數寫入兩個檔案中:

from math import sqrt

def is_prime(n):

assert n > 0

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 = ('z.txt', 'b.txt')

fs_list =

try:

for filename in filenames:

for number in range(1, 100):

if is_prime(number):

if number < 50:

fs_list[0].write(str(number) + '\n')

elif number < 100:

fs_list[1].write(str(number) + '\n')

except ioerror as ex:

print(ex)

print('寫檔案時發生錯誤')

finally:

for fs in fs_list:

fs.close()

print('操作完成')

if __name__ == '__main__':

main

讀寫json檔案

讀取檔案:

import json

test =

print(test)

print(type(test))

json_str = json.dumps(test)

print(json_str)

print(type(json_str))

使用python中的json模組將字典或列表以json格式儲存到檔案中:

import json

def main():

mydict =

try:

with open('data.json','w') as fs:

json.dump(mydict, fs)

except ioerror as e:

print(e)

print('儲存資料完成')

if __name__ == '__main__':

main

json模組主要有四個比較重要的函式,分別是:

dump- 將python物件按照json格式序列化到檔案中,

dumps - 將python物件處理成json格式的字串,

load - 將檔案中的json資料反序列化成物件,

loads - 將字串的內容反序列化成python物件。

檔案寫入和讀取

最近在提高自己程式設計能力,拿一些現實的小指令碼練下。該指令碼為python語言,主要涉及模組os。功能 將控制台輸入文字逐行儲存,和讀取。輸入逐行儲存 import os filename input please enter file name file open filename,w whil...

讀取和寫入plist檔案

plist檔案是標準的xml檔案,在cocoa中可以很簡單地使用。這裡介紹一下使用方法 以下 在mac和iphone中均適用。寫入plist檔案 nsmutabledictionary dict nsmutabledictionary alloc initwithcontentsoffile sam...

HDFS檔案讀取和寫入

讀取檔案 一 讀取方式一 寫入哪個datanode是不確定的,主要尋找讀取速度較快的datanode 怎麼找到這種datanode,從以下幾個方面 是否有本機位置,本機架位置,本機房位置 依次重試讀取檔案,直到讀取檔案成功 二 讀取方式二 backupread 每次讀取時,client會並行試著讀取...