首页 > 解决方案 > 我只想允许一个特定用户通过 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")

标签: pythondataframecsv

解决方案


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。当前登录的用户存储在adwhile中,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 哈希值。当然更好的是,存储散列和随机盐。


推荐阅读