1. 程式人生 > 其它 >第六章 檔案的操作方法(二)

第六章 檔案的操作方法(二)

目錄

檔案操作方法

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的內容寫入到開啟的拷貝檔案中