python - 如何替换不在当前循环Python中的文本文件中的一行
问题描述
我是编程新手,所以如果有更简单的方法可以解决这个问题,请告诉我。有一个名为的文本文件Duelist.txt
,其中包含以下内容:
-------------------------------------------------
Duelist: Seto Kaiba
Server: Amazon
Username: Kaibaman
Password: Blue-Eyes White Dragon
-------------------------------------------------
Duelist: Mokuba Kaiba
Server: Amazon
Username: Kaibaboy
Password: KaibabestBro
------------------------------------------------
此changeUsername(login,duelistID,exists,server):
函数运行 iflogin
和exists
are TRUE
。如果他们想更改用户名,它会提示用户输入新的用户名,然后该函数应该在当前位置之后的两行中更改用户名Duelist.txt
,但它没有......
def changeUsername(login,duelistID,exists,server):
index = 0
username = "Username: "
serverSearch = []
duel = "Duelist: " + duelistID
search = "Server: " + server
if login == True and exists ==True:
print("Would you like to change this username for " + server + "?")
print("Press \"y\" key for yes or press \"n\" key for no followed by the Enter key")
choice = input(f'{duelistID}:')
if choice == "y":
newUsername = input("Please enter new username: ")
username += newUsername
with open("Duelist.txt", 'r') as file:
content = file.readlines()
for line in content:
serverSearch.append(line.strip("\n"))
with open("Duelist.txt", 'r+') as file:
for index, line in enumerate(serverSearch):
if duel in line:
if search == serverSearch[index+1]:
serverSearch[index+2] = username
file.write(line.replace(serverSearch[index+2], username))
if choice == "n":
pass
print("Exiting Edit Server Username...")
time.sleep(1)
这是函数中的用户输入,changeUsername(login,duelistID,exists,server)
其中login
和exists
作为 True、duelistID
作为 Mokuba Kaiba 和server
作为 Amazon。
Would you like to change this username for Amazon?
Press "y" key for yes or press "n" key for no followed by the Enter key
Mokuba Kaiba:y
Please enter new username: Mokuba
Exiting Edit Server Username...
用户输入后,我在Duelist.txt
Duelist: Mokuba Kaiba---------------------------
Duelist: Seto Kaiba
Server: Amazon
Username: Kaibaman
Password: Blue-Eyes White Dragon
-------------------------------------------------
Duelist: Mokuba Kaiba
Server: Amazon
Username: Kaibaboy
Password: KaibabestBro
-------------------------------------------------
我很难弄清楚这一点并提出一个简单的解决方案,但我只是一个拥有四流代码的三流编码器。任何人都可以帮助使这个功能做它应该做的事情吗?
解决方案
尝试这个 :
def changeUsername(login,duelistID,exists,server):
index = 0
username = "Username: "
serverSearch = []
duel = "Duelist: " + duelistID
search = "Server: " + server
if login == True and exists ==True:
print("Would you like to change this username for " + server + "?")
print("Press \"y\" key for yes or press \"n\" key for no followed by the Enter key")
choice = input(f'{duelistID}:')
if choice == "y":
newUsername = input("Please enter new username: ")
username += newUsername
with open("Duelist.txt", 'r') as file:
content = file.readlines()
for line in content:
serverSearch.append(line.strip("\n"))
for index, line in enumerate(serverSearch):
if duelistID in line:
serverSearch[index]=(serverSearch[index]).replace(duelistID,newUsername)
with open("Duelist.txt","w") as file:
file.write('\n'.join(serverSearch))
if choice == "n":
pass
print("Exiting Edit Server Username...")
changeUsername(True,"Kaibaman",True,"Amazon")
我个人更喜欢将整个文本文件加载到列表中,进行所需的更改并将整个列表写回文件。
推荐阅读
- python - Python,PyTest 是否可以同时添加长参数和短参数?
- vb.net - 处理 WaitForSingleObject - 响应式 UI
- database - 在 PostgreSQL 中存储唯一和非唯一视图/使用统计信息的最佳方式
- reactjs - 使用 react native paper 和 react native navigation v5 将道具从堆栈导航器下的屏幕传递到共享应用栏
- assembly - NASM。如何使用在有效地址上不断变化的变量?
- javascript - 使用树结构 React JS 中的数据在下拉菜单中搜索
- ios - Xcode 重构“转换为 Switch”
- php - htaccess 重写 url 和 php GET 方法
- wordpress - 如何恢复不可用的 WordPress 网站?
- node.js - 运行 node ace invoke adonis-mix-asset 抛出此错误:`invoke` is not a registered command