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

歡迎訪問 生活随笔!

生活随笔

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

python

学会python的基础操作题_第3章 Python基础-文件操作函数 文件操作 练习题

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

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

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

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

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

#!/usr/bin/env python3

# -*- coding:utf-8 -*-

# 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 功能

#!/usr/bin/env python3

# -*- coding:utf-8 -*-

#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 os

with 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 os

with 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')

三.全局替換程序:

寫一個腳本,允許用戶按以下方式執行時,即可以對指定文件內容進行全局替換

替換完畢后打印替換了多少處內容

#!/usr/bin/env python3

# -*- coding:utf-8 -*-

import sys

import os

if 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 = 0

for line in read_f:

line = line.replace(old_str,new_str)

write_f.write(line)

num = line.count(new_str)

count += 1

totle = count * num

print("一共替換了%s處內容" % totle)

os.remove(filename)

os.rename(filename_swap,filename)

四.模擬登陸:

用戶輸入帳號密碼進行登陸

用戶信息保存在文件內

用戶密碼輸入錯誤三次后鎖定用戶,下次再登錄,檢測到是這個用戶也登錄不了

user_list.txt

wss:123:1

alex:456:1

jay:789:1

#!/usr/bin/env python3

# -*- encoding: utf8 -*-

import getpass

import os

user_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 += 1

print("\n用戶名錯誤")

elif user_dict[user]["lockaccount"] > 0:

print("\n用戶已被鎖定,請聯系管理員解鎖后重新嘗試")

break

else:

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 = True

else:

count += 1

print('\n密碼錯誤')

continue

if 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)

總結

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

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