Как создать условие подпроцесса "если еще" - PullRequest
0 голосов
/ 08 марта 2020

Итак, я создал код, на котором есть QLineedit, а под ним - кнопка Qpush. Указатель click.connect включает в себя команду подпроцесса, и он выглядит следующим образом (я поставлю только указатель click.connect, поскольку QLineedit и Qpushbutton не так важны)

def deluser(self):
    del1 = self.deluserline.text()
    del2 = subprocess.check_output(['userdel',del1)]
    self.deluserline.clear()
    #if a user is deleted, then it should display this:
    self.del3 = QMessageBox()
    self.del3.setText("User deleled !")
    self.del3.setWindowTitle('User delete')
    self.del3.setIcon(QMessageBox.Information)
    self.del3.show()

это на самом деле работает. Он может удалить пользователя, которого вы введете в QLineedit, но я хочу знать, как сделать условие if else здесь, где, если подпроцесс действительно найдет пользователя для удаления, он вернет QMessagebox, удаляющий удаление, и если он не найдет пользователя чтобы удалить его, появится сообщение «пользователь не удален».

1 Ответ

0 голосов
/ 08 марта 2020

Лог c должен проверить, существует ли пользователь и был ли он удален, чтобы мы могли реализовать метод, указанный существующими пользователями, а затем сравнить:

def users():
    users = []
    result = subprocess.check_output(["cat /etc/passwd"], shell=True)
    for line in result.decode().splitlines():
        words = line.split(":")
        if words:
            users.append(words[0])
    return users
def deluser(self):
    user = self.deluserline.text()
    self.deluserline.clear()
    if user in users():
        subprocess.check_output(['userdel', user)]
        if user not in users():
            m = QMessageBox()
            m.setText("User deleled !")
            m.setWindowTitle('User delete')
            m.setIcon(QMessageBox.Information)
            m.show()
         else:
            print("User {} could not be deleted".format(user))
     else:
         print("User {} does not exist".format(user))
...