带有if-elif-else和/或字符串比较问题的Python问题

时间:2019-03-17 11:06:30

标签: python python-3.x if-statement exception

我是Python(和stackoverflow:D)的新手,在学校里,我们得到了创建(普通用户并具有sudo权限)和删除Linux系统上的用户的任务(在本例中为Ubuntu 18.04)。我正在使用Pycharm进行编码,并使用Python 3.7作为解释器。 我已经搜索了答案,但找不到答案。 因此,我不确定是什么导致了此问题,因此对可能造成混淆的标题感到抱歉。 我会尽力解释。

我想问一个问题,用户是否要创建或删除用户。

def useradministration():
    parameters.question_user ##input("User add (a) or delete (d)?: ").strip() 

...之后:

#a for adding an user
if parameters.question_user == 'a':
   def usercreate():
      parameters.question_role ##input("Role for the user: administrator (a) or normal user (n)? ").strip()
      # n for normal user - creating via useradd
      if parameters.question_role == 'n':
        .....
      # a for administrator - same as a but with usermod for sudo
      elif parameters.question_role == 'a':
        .....
      #error if its neither n or a
      else:
         print("Error: wrong specification for role.")
   usercreate()
#d for deleting an user
elif parameters.question_user == 'd':
   def userdelete():
      ........
#error if its neither a or d
else:
   print("Error: wrong specification for user.")

第一个问题。 输出示例:

User add (a) or delete (d)?: r
Role for the user: administrator (a) or normal user (n)? u
Select username:g
Error: wrong specification for user.

它给出正确的输出,并带有“错误:用户的规范错误”。 -但是,如果第一个条件不正确,为什么仍要遍历所有问题?我的脚本有问题还是输入比较不起作用,还是其他原因?

User add (a) or delete (d)?: r
Error: wrong specification for user.

那是我所希望的输出。


另一个要删除的问题。我们必须将所有内容都记录到一个文件中。我的用户删除看起来像这样:

     def userdelete():
        parameters.username ##username = input("Select username:")
        #try to delete if it exists, print and log it
        try:
            os.system("sudo userdel -r " + parameters.username)
            print("User " + parameters.username + " deleted.")
            logging.info("User " + parameters.username + " deleted.")
        #exception for when user doesn't exist, just printing and logging it
        except OSError:
            print("User " + parameters.username + " doesnt exist.")
            logging.critical("User " + parameters.username + " doesnt exist.")
            pass

    userdelete()

示例输出:

User add (a) or delete (d)?: d
Role for the user: administrator (a) or normal user (n)? o
Select username:abc
User abc deleted.
userdel: user 'abc' does not exist

该脚本实际上是在删除用户(如果存在)。 但是为什么要问角色问题,如果用户不存在(因为abc不存在),为什么不使用except语句呢?在这种情况下我使用错了吗?

我希望有人能帮助我。

谢谢。


编辑 parameters.question_user来自另一个名为parameter.py的.py文件(我已将其导入到main.py文件中),并且仅包含

question_user = input("User add (a) or delete (d)?: ").strip()
question_role = input("Role for the user: administrator (a) or normal user (n)? ").strip()
username = input("Select username:")

0 个答案:

没有答案