python - 我只想允许一个特定用户通过 python 删除 csv 中其他用户的记录
问题描述
该程序从登录部分开始,如果用户被选为主管管理员,则用户可以删除其他帐户。否则,是不允许的。
这是登录部分:
ad=input("Enter the ADMIN name:")
pwd=input("enter the Passward:")
df=pd.read_csv("admin_list.csv")
df1=df[(df['Admin']==ad) & (df['Password']==pwd)]
if(df1.empty):
print("=X= TRY AGAIN =X=")
else:
这是我的删除代码。但是,它给出了 ValueError:
if (df1['Admin']== "Jhanvi"):
print(" ")
add=input("Enter Admin you want to Delete: ")
df2=pd.read_csv('admin_list.csv')
df3=df2[df2['Admin']==add]
if(df3.empty):
print("---This Admin already not exists---")
else:
data=(df2[df2['Admin']==add].index.values)
df2=df2.drop(data)
df2.to_csv('admin_list.csv',index=False)
df2=pd.read_csv('admin_list.csv')
print("-- ", add, " record is successfully deleted. --")
else:
print("Sorry you are not allowed to remove staff details")
解决方案
ValueError 看起来像这样:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
并在这条线上提出
if (df1['Admin'] == "Jhanvi"):
解决方案:df1['Admin']
用变量替换ad
。当前登录的用户存储在ad
while中,df1['Admin']
包含所有用户名。
以下代码对我有用:
import pandas as pd
if __name__ == '__main__':
df1 = pd.read_csv("admin_list.csv")
ad = input("Enter the ADMIN name:")
# login part omitted
if ad == "Jhanvi": # this is the line that needs to be changed
print(" ")
add = input("Enter Admin you want to Delete: ")
df2 = pd.read_csv('admin_list.csv')
df3 = df2[df2['Admin'] == add]
if (df3.empty):
print("---This Admin already not exists---")
else:
data = (df2[df2['Admin'] == add].index.values)
df2 = df2.drop(data)
df2.to_csv('admin_list.csv', index=False)
df2 = pd.read_csv('admin_list.csv')
print("-- ", add, " record is successfully deleted. --")
else:
print("Sorry you are not allowed to remove staff details")
不过要提醒一句:S3DEV 在评论中的建议是正确的。您不应将此类数据存储在 csv 文件中,而应使用适当的数据库。SQLite 一开始就足够了。
更重要的是:您永远不应该将密码存储为纯文本。至少存储他们的 sha256 哈希值。当然更好的是,存储散列和随机盐。
推荐阅读
- android - ListViewAdapter 打乱项目
- html - 试图使 div 框展开
- html - 单击字段时如何将类添加到 HTML?
- mysql - SQL JOIN QUERY INSERT INTO(PHPMYADMIN)
- node.js - `dat` 协议能否有效支持视频直播?
- sqlite - 如何将 sqlite3 依赖项添加到 VS Code 扩展?
- sql-server - sql server 按两列旋转多个字段
- mysql - 如果 id1 是表 t1 中的主键。我想创建新表 t2 并使用 t1 中的 id1 作为 t2 中的外键。我的查询应该是什么?
- android - 如何使用 altbeacon android 库使用 UUID 搜索信标?
- arrays - 过滤字典数组