[英]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.