[英]Append lines from a text file to a list in python without '\n'
我目前正在学习 python 并且我有一个登录系统,它使用一个名为“用户”的文本文件来存储用户名。 我希望能够通过逐行读取文本并将其附加到 python 中的数组来更新此文件。 然后将数组写回到文本文件中,以便在下次打开程序时再次附加到数组中。
但是现在,由于每个用户名都写在不同的行中,当我将 append 写入我的数组时,它给了我:
用户名 = ['testing1\n', 'testing2']
这是我的代码:
import random
import operator
import shelve
import os
from os import system, name
import time
from time import sleep
users = []
password = []
def clear():
if name == 'nt':
_ = system('cls')
else:
print("thisisweird.")
# start of login system
def loggedOut():
status = input("Are you a registered user? y/n? Press q to quit ")
if status == "y":
oldUser()
elif status == "n":
newUser()
elif status == "q":
quit()
def loggedIn():
menu()
def newUser():
createLogin = input('Create a Username: ')
if createLogin in users:
print("\nUsername is taken")
else:
users.append(createLogin)
createPwd = input("Create a Password: ")
password.append(createPwd)
print("\nRegister successful\n")
loggedOut()
def oldUser():
login = input("Enter username: ")
pwd = input("Enter password:")
if login in users and users[login] == pwd:
print("\nWelcome,", login,"!")
loggedIn()
else:
print("\nUsername or Password invalid\n")
def quit():
print("Goodbye! The program will now exit")
os.remove('./users/login.txt')
f = open('./users/login.txt', 'w')
for ele in users:
f.write(ele+'\n')
f.close()
sleep(2)
clear()
exit()
#end of login system
def loginsys():
folder_check = os.path.isdir('./users')
if (folder_check == True):
file_check = os.path.isfile('./users/login.txt')
if (file_check == True):
f = open('./users/login.txt', 'r+')
f1 = f.readlines()
for ele in f1:
users.append(ele)
f.close()
print(users)
loggedOut()
else:
f = open('./users/login.txt', 'w')
f.write('')
f.close()
loggedOut()
else:
os.mkdir('./users')
loginsys()
def menu():
print("Hello World")
loginsys()
readlines()
在每个文本行的末尾放置一个换行符。 您可以使用rstrip()
将其删除:
f = open('./users/login.txt', 'r+')
f1 = f.readlines()
for ele in f1:
users.append(ele.rstrip())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.