1. 程式人生 > >python對文件的讀寫

python對文件的讀寫

文件的 創建 txt ext def rip 統一 cor 所有

文件 File
什麽是文件
文件是用於數據存儲和單位
文件通常用來長期存儲數據
文件中的數據是以字節為單位進行順序存儲的

文件的操作流程:
1. 打開文件
2. 讀/寫文件
3. 關閉文件
註:
任何的操作系統,一個應用程序同時打開文件的數量有最大數限制

文件的打開函數
open(file, mode=‘rt/wt‘) 用於打開一個文件,返回此文件流對象,如果打開文件失敗,則會觸發OSError錯誤

對文件的讀/寫:

文件的關閉方法:
F.close() # 關閉文件,釋放系統資源


文本文件操作
操作模式:
‘t‘
說明:
  1. 默認文件中存儲的都為字符數據,在讀寫過程中會自動進行編解碼操作,
  2. 文本文件以行為單位進行分隔,在python內部統一用‘\n‘作用為換行符進行分隔
  3. 對文本文件的讀寫操作需要用字符串(str) 進行數據操作

各操作系統的換行符
Linux換行符: ‘\n‘
Windows 換行符: ‘\r\n‘
新的Mac OS 換行符: ‘\n‘
舊的Macintosh換行符: ‘\r‘(已不用了)

這是對文件的讀示例:

zengsf.txt內容:
張三 20 100
李四 21 96
小王 20 98
~          


def read_info_txt():
    dic = []
    try:
        f = open("zengsf.txt")
        lines = f.readlines()       #一次性讀取文件的所有數據,然後用for循環來進行遍歷
for x in lines: l = x.split(" ") dic.append({"name":l[0],"age":int(l[1]),"score":int(l[2])}) print("%s今年%d歲,成績是:%d"%(l[0],int(l[1]),int(l[2]))) f.close() return dic except: print("文件打開失敗") def print_info(L): for d in L:
print(d["name"],"今年",d["age"],"歲,成績是:",d["score"]) L = read_info_txt() print(L) print_info(L) 打印結果: tarena@tedu:~/zengsf$ python3 exercise822.py 張三今年20歲,成績是:100 李四今年21歲,成績是:96 小王今年20歲,成績是:98 [{name: 張三, score: 100, age: 20}, {name: 李四, score: 96, age: 21}, {name: 小王, score: 98, age: 20}] 張三 今年 20 歲,成績是: 100 李四 今年 21 歲,成績是: 96 小王 今年 20 歲,成績是: 98

對文件的讀寫示例:


文本文件的寫方法:
模式字符串:"w"/"x"/"a"
F.write(字符串)
F.writelines(字符串列表)

def input_data():
    l = []
    while True:
        x = input("請輸入你要存入的數據:")
        if x == "":
            break
        l.append(x)
    return l                                     #將鍵盤輸入的數據存在列表中


#f = open("input.txt","rt")

def write_data(l):
    try:
        f = open("input.txt", "w")               #創建或打開文件進行寫操作
        for i in l:                              #循環遍歷列表並將數據寫入文件中
            f.write(i)
            f.write("\n")
        f.close
    except OSError:
        print("存入數據失敗")
                                                             
write_data(input_data())



def read_data():
    l = []
    try:
        f = open("input.txt", "rt")              #讀取剛剛寫入的數據
        lines = f.readlines()
        for line in lines:
            s = line.rstrip("\n")
            l.append(s)
        print("讀取文件成功")
        return l
    except OSError:
        print("文件打開失敗")

def print_text(lst):
    for line_number ,s in enumerate(lst, 1):    #利用到了叠代器中的枚舉方法
        print(line_number, ":", s)

if __name__ == __main__:
    print_text(read_data())

輸出結果:
                                         
tarena@tedu:~/zengsf$ python3 exercise822.py
請輸入你要存入的數據:zengsf
請輸入你要存入的數據:shaofeng
請輸入你要存入的數據:fengshao
請輸入你要存入的數據:
讀取文件成功
1 : zengsf
2 : shaofeng
3 : fengshao

python對文件的讀寫