Мне нужно написать простой скрипт python (python3) для хранения моего локального IP-адреса в переменной, чтобы потом манипулировать им, я много читаю, но не понимаю, где я здесь ошибаюсь, кусок кода для лучшее понимание ..
#!/usr/bin/env pyhton3
import os
import subprocess
import sys
import fileinput
localip = subprocess.call(["ifconfig | grep 'inet addr' | cut -d ':' -f2 | grep 'Bcast' | cut -d ' ' -f1"], shell=True)
print localip
...
...
...
Теперь, когда я его исключаю, он печатает мне это:
pi@raspberrypi:~/Documents $ python change.py
192.168.1.6
0
Кажется, я не могу найти решение самостоятельно, может ли кто-нибудь сказать мне, где я делаю не так, и помочь мне? Благодарю.
2 ответа
Чтобы решить вашу проблему XY, почему бы просто не использовать сам Python для получения вашего IP-адреса / имени хоста?
>>> import socket
>>> socket.gethostname()
'MY-COMPUTER'
>>> socket.gethostbyname(socket.gethostname())
'192.168.1.126'
>>> socket.getfqdn()
'my-computer.local'
>>> socket.gethostbyname(socket.getfqdn())
'192.168.1.126'
В python2 вы бы сделали:
stdout = subprocess.check_output(args, shell=true)
В python3 вы также можете:
completed_process = subprocess.run(args, shell=True)
stdout = completed_process.stdout
Какой интерфейс может быть более полезным
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.
subprocess.call
- это код возврата команды, который используется, чтобы указать, успешно ли выполнена команда. В этом случае он равен нулю, потому что ошибки не было.