Even only with "*proc.decode("utf-8")"* in the above code still it seems to throw the error
#return proc.strip().decode("utf-8") #return proc.decode("utf-8").strip() * return proc.decode("utf-8")* Error: /home/srinivasan/Downloads/wifidisconnectissuenov23_homework/venv/bin/python /home/srinivasan/Downloads/wifidisconnectissuenov23_homework/qa/test_library/test4.py printing stdout!!!!!!!!!! printing retcode!!!!!!!!!! 0 Traceback (most recent call last): File "/home/srinivasan/Downloads/wifidisconnectissuenov23_homework/qa/test_library/test4.py", line 31, in <module> main("Apartment 18", "40672958689850014685") * File "/home/srinivasan/Downloads/wifidisconnectissuenov23_homework/qa/test_library/test4.py", line 29, in main* * return proc.decode("utf-8")* *AttributeError: 'Popen' object has no attribute 'decode'* Process finished with exit code 1 On Sun, Nov 25, 2018 at 11:24 PM srinivasan <srinivasan....@gmail.com> wrote: > Hope now I have changed on the string output as below, could you please > correct me if am still wrong? > > import sys > import subprocess > > interface = "wlan0" > > > def main(ssid, pw): > > try: > cmd = "nmcli device wifi connect '%s' password '%s'" % (ssid, pw) > > proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, > stderr=subprocess.PIPE, shell=True, universal_newlines=True) > stdout, stderr = proc.communicate() > retcode = proc.returncode > > print("printing stdout!!!!!!!!!!", stdout) > print("printing retcode!!!!!!!!!!", retcode) > > except subprocess.CalledProcessError as e: > s = """While executing '{}' something went wrong. > Return code == '{}' > Return output:\n'{}' > """.format(cmd, e.returncode, e.output, shell=True) > raise AssertionError(s) > > #return proc.strip().decode("utf-8") > * return proc.decode("utf-8").strip()* > > main("Apartment 18", "40672958689850014685ad") > > Error: > > /home/srinivasan/Downloads/wifidisconnectissuenov23_homework/venv/bin/python > /home/srinivasan/Downloads/wifidisconnectissuenov23_homework/qa/test_library/test4.py > Traceback (most recent call last): > File > "/home/srinivasan/Downloads/wifidisconnectissuenov23_homework/qa/test_library/test4.py", > line 30, in <module> > main("Apartment 18", "40672958689850014685") > * File > "/home/srinivasan/Downloads/wifidisconnectissuenov23_homework/qa/test_library/test4.py", > line 28, in main* > * return proc.decode("utf-8").strip()* > *AttributeError: 'Popen' object has no attribute 'decode'* > printing stdout!!!!!!!!!! > printing retcode!!!!!!!!!! 0 > > Process finished with exit code 1 > > > > On Sun, Nov 25, 2018 at 11:19 PM MRAB <pyt...@mrabarnett.plus.com> wrote: > >> On 2018-11-25 17:13, srinivasan wrote: >> > Dear Python Experts Team, >> > >> > As am newbie still learning the python syntax from past 2 weeks, Excuse >> me, >> > If this might be silly question, As I am trying to execute shell command >> > (ie, nmcli) using "subprocess.Popen". >> > >> > 1. Am trying to improve the below code with "try" and "exception", could >> > you please help me how "try" and "exception" can be used on the below >> code >> > snippet. I hope in my code with try and exception, seems to be a bug. >> > >> > 2. As I am trying to execute shell commands using "subprocess.Popen", I >> am >> > trying to parse the strings output by "cmd = "nmcli device wifi connect >> > '%s' password '%s'" % (ssid, pw)" command as below, but it is throwing >> the >> > below error as shown in "Output error logs:" >> > >> > Could you please let me to fix the bug in the below code snippet, >> where I >> > need the collect the strings of the command output and later how to be >> > parsed after execution of the command for example, I need to parse the >> > string "Connection activation failed: " and compare it with the command >> > output, could you please help me how this can be achieved? >> > >> > *Command:* >> > :~$ nmcli device wifi connect 'Apartment 18' password >> > '40672958689850014685abcdf' >> > Error: Connection activation failed: (7) Secrets were required, but not >> > provided. >> > :~$ >> > >> > *Code:* >> > *import sys* >> > *import subprocess* >> > >> > *interface = "wlan0"* >> > >> > >> > *def main(ssid, pw):* >> > >> > * # cmd = "nmcli device wifi connect '%s' password '%s'" % (ssid, >> pw)* >> > * #* >> > * # proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, >> > stderr=subprocess.PIPE, shell=True, universal_newlines=True)* >> > * # stdout, stderr = proc.communicate()* >> > * # retcode = proc.returncode* >> > * #* >> > * # print("printing stdout!!!!!!!!!!", stdout)* >> > * # print("printing retcode!!!!!!!!!!", retcode)* >> > >> > * try:* >> > * cmd = "nmcli device wifi connect '%s' password '%s'" % (ssid, >> pw)* >> > >> > * proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, >> > stderr=subprocess.PIPE, shell=True, universal_newlines=True)* >> > * stdout, stderr = proc.communicate()* >> > * retcode = proc.returncode* >> > >> > * print("printing stdout!!!!!!!!!!", stdout)* >> > * print("printing retcode!!!!!!!!!!", retcode)* >> > >> > * except subprocess.CalledProcessError as e:* >> > * s = """While executing '{}' something went wrong.* >> > * Return code == '{}'* >> > * Return output:\n'{}'* >> > * """.format(cmd, e.returncode, e.output, >> > shell=enable_shell)* >> > * raise AssertionError(s)* >> > >> > * return proc.strip().decode("utf-8")* >> > >> > *main("Apartment 18", "40672958689850014685")* >> > >> > *Output error logs:* >> > >> > /home/srinivasan/Downloads/wifidisconnectissuenov23/qa/venv/bin/python >> > >> /home/srinivasan/Downloads/wifidisconnectissuenov23/qa/test_library/test4.py >> > Traceback (most recent call last): >> > File >> > >> "/home/srinivasan/Downloads/wifidisconnectissuenov23/qa/test_library/test4.py", >> > line 38, in <module> >> > printing stdout!!!!!!!!!! >> > printing retcode!!!!!!!!!! 0 >> > main("Apartment 18", "40672958689850014685") >> > File >> > >> "/home/srinivasan/Downloads/wifidisconnectissuenov23/qa/test_library/test4.py", >> > line 36, in main >> > return proc.strip().decode("utf-8") >> > AttributeError: 'Popen' object has no attribute 'strip' >> > >> > Process finished with exit code 1 >> > >> > Kindly do the needful as am stuck with this issue from 2 days >> > >> > Many Thanks in advance, >> > >> Look carefully at the traceback. It's actually telling you what the >> problem is. >> >> You're trying to do .strip() on proc, but proc is the process itself. >> >> Instead, what you want is to do .strip() on the string that it output. >> -- >> https://mail.python.org/mailman/listinfo/python-list >> > _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor