Уведомления

Группа в Telegram: @pythonsu

#1 Май 24, 2012 09:42:42

Fre
Зарегистрирован: 2012-04-20
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Различие os.system и call()

В чем различие? что лучше использовать?
и немного кода:

if not(call(test, shell=True)):
result='OK'
else:
result=test
print(test_name + ‘ … ’ + result)

почему для грамотной работы приходится ставить not?
поясню, при удачном выполнении команды uname | grep Linux
возвращается непустая строка ‘Linux’
при неудачном выполнении - возвращается пустая строка, почему так?

и еще проблема, если call или os.system стоит в условии if, он тем не менее выводит на экран результат, как избежать этого?

Офлайн

#2 Май 24, 2012 16:18:09

asilyator
От:
Зарегистрирован: 2010-10-24
Сообщения: 276
Репутация: +  -2  -
Профиль   Отправить e-mail  

Различие os.system и call()

А где ты этот call() взял?
Подозреваю, что он возвращает код возврата программы.



Офлайн

#3 Май 25, 2012 05:27:28

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Различие os.system и call()

>>> import subprocess
>>> print(subprocess.getstatusoutput.__doc__)
Return (status, output) of executing cmd in a shell.
    Execute the string 'cmd' in a shell with os.popen() and return a 2-tuple
    (status, output).  cmd is actually run as '{ cmd ; } 2>&1', so that the
    returned output will contain output or error messages.  A trailing newline
    is stripped from the output.  The exit status for the command can be
    interpreted according to the rules for the C function wait().  Example:
    >>> import subprocess
    >>> subprocess.getstatusoutput('ls /bin/ls')
    (0, '/bin/ls')
    >>> subprocess.getstatusoutput('cat /bin/junk')
    (256, 'cat: /bin/junk: No such file or directory')
    >>> subprocess.getstatusoutput('/bin/junk')
    (256, 'sh: /bin/junk: not found')
    
>>> 



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version