第六章 檔案的操作方法(二)
阿新 • • 發佈:2021-11-11
目錄
檔案操作方法
1.讀系列
with open(r'a.txt', 'a' , encoding='utf8') as f:
# print(f.read()) # 一次行讀取檔案內容
# print(f.readline()) # 每次只讀一行檔案
# print(f.readlines()) #讀取檔案所有的內容組織成列表
print(f.readable()) # 校驗當前檔案是否具備讀的能力
2.寫系列
with open(r'a.txt', 'w' , encoding='utf8') as f: # f.write('克服一切困難') # 往檔案內寫入文字內容 # f.write(123) # 寫入內容必須是字串型別 # f.writelines(['maby', 'hello', 'fu*k']) # 可以將列表中的多個字串元素全部拼接在一起 # print(f.writable()) # True # print(f.readabel()) # False # f.flush() # 直接將記憶體檔案資料刷到硬碟 等於文字ctrl+s
檔案優化操作
with open(r'a.txt', 'a' , encoding='utf8') as f: print(f.read()) # 一次性讀取檔案內所有的內容 """ 1.一次性讀完之後 游標停留在了檔案末尾 無法再次讀取內容 2.該方法在讀取大檔案的時候 可能會造成記憶體溢位的情況 """ """ for line in f: # 檔案變數名f支援for迴圈 相當於一行行讀取檔案的內容 line 以後涉及多行檔案內容的情況一般都是採用for迴圈讀取 """
檔案操作模式
t 文字模式
1.預設的模式
r w a >>> rt wt at
2.該模式只能操作字串(文字)
3.該模式必需要指定encoding引數
4.該模式所有操作都是以字串基本單位(文字)
b 二進位制模式
1.該模式可以操作任意型別檔案
2.該模式所有操作都是以bytes型別(二進位制)基本單位
3.該模式不需要指定encoding引數
rb wb ab
補充:練習!
1.註冊登入
# 寫一個註冊登入表 # while True: # print(""" # 1.使用者註冊 # 2.使用者登入 # """) # choice = input('請輸入你的選擇(q結束選擇):').strip() # if choice == 'q': # print('結束') # break # elif choice == '1': # # 1.獲取使用者使用者名稱和密碼 # user_name = input('請輸入需要註冊的使用者名稱:').strip() # user_pass = input('請輸入註冊使用者的密碼:').strip() # # 2.1.判斷使用者名稱是否已存在 # user_info = '%s|%s\n' % (user_name, user_pass) # with open(r'D:\pyt.hc\day09檔案\a.txt', 'r', encoding='utf8') as f1: # # 2.2.迴圈讀取每一行使用者資料 # for line in f1: # # 2.3.獲取每一行資料中的使用者名稱 # username, pwd = line.split('|') # # 2.4.判斷使用者名稱是否一致 # if user_name == username: # print('使用者已存在') # break # else: # # 3.檔案操作 寫入資料 # with open(r'D:\pyt.hc\day09檔案\a.txt', 'a', encoding='utf8') as f: # f.write(user_info) # print('使用者%s註冊成功' % user_name) # elif choice == '2': # # 1.獲取使用者名稱和密碼(先使用input獲取使用者輸入的資料 然後strip()移除首尾空格 之後賦值給變數名username) # user_login = input('輸入需要登入的使用者賬號:').strip() # pass_login = input('輸入需要登入的使用者的密碼:').strip() # # 2.獲取檔案內真實的使用者資料 # with open(r'D:\pyt.hc\day09檔案\a.txt', 'r', encoding='utf8') as f: # for line in f: # 3.切割字串獲取真實的使用者名稱和密碼 '''注意密碼末尾有\n''' # username, pwd = line.split('|') # # 4.比對使用者名稱和密碼是否正確 # if user_login == username and pass_login == pwd.strip('\n'): # print('sucess') # break # else: # print('false') # else: # print('暫未開放次功能')
一個簡易的拷貝工具(支援所有的檔案型別)
# with open(input('請輸入需要複製檔案:').strip(), 'rb') as f: # 獲取使用者輸入的檔案地址,獲取使用者想要儲存新檔案的地址
# 用二進位制的方式開啟需要複製的檔案
# path = f.read() # 將檔案讀取出來的內容賦值給copy_file
# with open(input('請輸入需要拷貝到哪個目錄:').strip(), 'wb') as f1: # 獲取使用者想要儲存新檔案的地址,用二進位制的方式開啟需要拷貝的檔案,
# f1.write(path) # 將copy_file的內容寫入到開啟的拷貝檔案中