日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

4道Python基础文件操作函数 练习题

發布時間:2025/3/20 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 4道Python基础文件操作函数 练习题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.利用b模式,編寫一個cp工具,要求如下:

  • 既可以拷貝文本又可以拷貝視頻,圖片等文件

  • 用戶一旦參數錯誤,打印命令的正確使用方法,如usage: cp source_file target_file

  • 提示:可以用import sys,然后用sys.argv獲取腳本后面跟的參數

    ''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' # cp工具 import sys if len(sys.argv) != 3:print("usage: cp source_file target_file")sys.exit() else:source_file, target_file = sys.argv[1], sys.argv[2]with open(source_file,"rb") as read_f,open(target_file,"wb") as write_f:for line in read_f:write_f.write(line)

    二.Python實現 tail -f 功能

    #tail -f工具 import sys,time if len(sys.argv) != 2:print("usage: tail file_name")sys.exit() else:file_name = sys.argv[1]with open(file_name,'rb') as f:f.seek(0,2) # 每次都從文件末尾開始讀while True:line = f.readline()if line:print(line.decode('utf-8'),end='') # 讀取的每一行都去掉行尾的換行符time.sleep(1)

    有待優化,每次打開應該顯示最后10行。

    三.文件的修改

    文件的數據是存放于硬盤上的,因而只存在覆蓋、不存在修改這么一說,我們平時看到的修改文件,都是模擬出來的效果,具體的說有兩種實現方式:

    • 方式一:將硬盤存放的該文件的內容全部加載到內存,在內存中是可以修改的,修改完畢后,再由內存覆蓋到硬盤(word,vim,nodpad++等編輯器)
    import oswith open('a.txt') as read_f,open('.a.txt.swap','w') as write_f:data=read_f.read() #全部讀入內存,如果文件很大,會很卡data=data.replace('alex','SB') #在內存中完成修改write_f.write(data) #一次性寫入新文件os.remove('a.txt') os.rename('.a.txt.swap','a.txt')
    • 方式二:將硬盤存放的該文件的內容一行一行地讀入內存,修改完畢就寫入新文件,最后用新文件覆蓋源文件
    import oswith open('a.txt') as read_f,open('.a.txt.swap','w') as write_f:for line in read_f:line=line.replace('alex','SB')write_f.write(line)os.remove('a.txt') os.rename('.a.txt.swap','a.txt')

    三.全局替換程序:

    • 寫一個腳本,允許用戶按以下方式執行時,即可以對指定文件內容進行全局替換
    • 替換完畢后打印替換了多少處內容
    ''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' import sys import osif len(sys.argv) != 4:print("usage: python3 replace old_str new_str filename")sys.exit() else:old_str = sys.argv[1]new_str = sys.argv[2]filename = sys.argv[3]filename_swap = sys.argv[3] + ".swap"with open(filename,"r",encoding="utf-8") as read_f,open(filename_swap,"w",encoding="utf-8") as write_f:count = 0for line in read_f:line = line.replace(old_str,new_str)write_f.write(line)num = line.count(new_str)count += 1totle = count * numprint("一共替換了%s處內容" % totle)os.remove(filename)os.rename(filename_swap,filename)

    四.模擬登陸:

    • 用戶輸入帳號密碼進行登陸
    • 用戶信息保存在文件內
    • 用戶密碼輸入錯誤三次后鎖定用戶,下次再登錄,檢測到是這個用戶也登錄不了

    user_list.txt

    wss:123:1 alex:456:1 jay:789:1 import getpass import osuser_dict = {} with open("user_list.txt", "r", encoding="utf-8") as user_list_flie:for line in user_list_flie.readlines():user_list = line.strip().split(":")# print(user_list)_user = user_list[0].strip()_pwd = user_list[1].strip()_lockaccount = int(user_list[2].strip())user_dict[_user] = {"user": _user, "pwd": _pwd, "lockaccount": _lockaccount}# print(user_dict[_username])# print(user_dict)exit_flag = False count = 0 while count < 3 and not exit_flag:user = input('\n請輸入用戶名:')if user not in user_dict:count += 1print("\n用戶名錯誤")elif user_dict[user]["lockaccount"] > 0:print("\n用戶已被鎖定,請聯系管理員解鎖后重新嘗試")breakelse:while count < 3 and not exit_flag:pwd = getpass.getpass('\n請輸入密碼:')# pwd = input('\n請輸入密碼:')if pwd == user_dict[user]["pwd"]:print('\n歡迎登陸')print('..........')exit_flag = Trueelse:count += 1print('\n密碼錯誤')continueif count >= 3: # 嘗試次數大于等于3時鎖定用戶if user == "":print("\n您輸入的錯誤次數過多,且用戶為空")elif user not in user_dict:print("\n您輸入的錯誤次數過多,且用戶 %s 不存在" % user)else:user_dict[user]["lockaccount"] += 1# print(user_dict[user]["lockaccount"])with open("user_list.txt", "r", encoding="utf-8") as user_list_file, open("use_list.txt.swap", "w",encoding="utf-8") as new_user_list_file:for new_line in user_dict:new_user_list = [str(user_dict[new_line]["user"]), str(user_dict[new_line]["pwd"]),str(user_dict[new_line]["lockaccount"])]# print(new_user_list)user_str = ":".join(new_user_list)print(user_str)new_user_list_file.write(user_str + "\n")os.remove("user_list.txt")os.rename("use_list.txt.swap", "user_list.txt")print("\n您輸入的錯誤次數過多,%s 已經被鎖定" % user)

    總結

    以上是生活随笔為你收集整理的4道Python基础文件操作函数 练习题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。