Имя хоста сокета, не могу получить IP - PullRequest
0 голосов
/ 29 апреля 2020

Я переключаюсь между несколькими компьютерами для работы, и пока мы не запустим сервер для наших данных, мне придется вручную изменить путь к файлу, в котором хранится моя маскировка. Это раздражало меня, так как я много переключаюсь и пути к файлам разные. Итак, я пытаюсь использовать сокет для управления путями к файлам на разных компьютерах. Это код на данный момент:

import socket

hostname = socket.gethostname()
ip_address = socket.gethostbyname(hostname)

if ip_address is '124.0.1.1':
    print('Working on laptop 1:')
    masked_data = '/mnt/c/Users/file/path/woot/woot'
else:
    raise ValueError('Which computer are you on? Need to know for mask filepath...')
    exit() 

По сути, я хочу вот что: 1) Снять IP с компьютера, 2) если это ноутбук 1, использовать IP с этого компьютера и следовать по пути к файлу , 3) если это не так, поднять ошибку. (Я обновлю это для нескольких компьютеров, но кому здесь нужны сложности?)

Проблема, с которой я столкнулся, заключается в следующем: когда я запускаю скрипт, как показано выше, он пропускает оператор if и выдает ошибка. Но если я добавлю строку, которую выводит строка socket.gethostbyname(hostname), она будет работать нормально.

то есть приведенный выше код не работает, а приведенный ниже код:

import socket

ip_address = '124.0.1.1'
if ip_address is '124.0.1.1':
    print('Working on laptop 1:')
    masked_data = '/mnt/c/Users/file/path/woot/woot'
else:
    raise ValueError('Which computer are you on? Need to know for mask filepath...')
    exit() 

In Я python, когда я запускаю скрипт и проверяю, что такое ip_address, это буквально строка с IP-адресом. то есть

In [1]: hostname = socket.gethostname()
In [2]: ip_address = socket.gethostbyname(hostname)
In [3]: ip_address
Out[3]: '124.0.1.1'  

Я не знаю, что происходит, и я не уверен, почему это не работает. Любая помощь приветствуется.

1 Ответ

1 голос
/ 29 апреля 2020

Вы можете найти это интересным: Сравнение строк в Python: это против ==

Попробуйте использовать == для сравнения строк вместо is. Он сравнивает базовую ссылку, поэтому в первой программе он не равен.

...