Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 15.12.2012
Сообщений: 126

Ошибка типа данных

24.06.2024, 15:16. Показов 615. Ответов 3

Студворк — интернет-сервис помощи студентам
Появляется ошибка. Как исправить? Нужно, чтобы результат был следующим:
Доменное имя для ('10.62.39.1', '10.62.39.2', '10.62.39.3', '10.62.39.4', '10.62.39.4') как ('WS0620390605', 'WS0620391315', 'WS06939354', 'WS0650351315', 'WS0625481595')

WS............ - это доменные имена компьютеров, которые должны браться с помощью gethostbyaddr

hostname = socket.gethostbyaddr(tuple(iplist))
^^^^^^^^^^^^^^^^^^^^^^^
TypeError: gethostbyaddr() argument 1 must be str, bytes or bytearray, not tuple
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import socket
from PyQt6 import QtCore, QtGui, QtWidgets
import ipaddress
 
# проверка на валидацию IP адресов
def ip_checkv4(self):
        ip1 = self.ui2.lineEdit.text() # 10.62.39.1
        ip2 = self.ui2.lineEdit_2.text() # 10.62.39.5
 
        if(ip1 == "" and ip2 == ""):
            print("Начальный и конечный IP-адреса должны быть введены.")
        elif(ipaddress.ip_address(ip1) and ipaddress.ip_address(ip2)):
            ipaddress1 = ip1.split(".") # ['10', '62', '39', '1']
            ipaddress2 = ip2.split(".") #['10', '62', '39', '5']
            if(ipaddress1[:3] == ipaddress2[:3]): # проверка на совпадение первых трех октетов ['10', '62', '39']['10', '62', '39']
                if(ipaddress1[3] < ipaddress2[3]): # если четвертый октет меньше, то выводим диапазон
                    # hostname = socket.gethostbyaddr(ip1)[0]
                    iplist = []
                    ipcur = ipaddress.ip_address(ip1)
                    while ipcur <= ipaddress.ip_address(ip2):
                        iplist.append(str(ipcur))
                        ipcur += 1
                    hostname = socket.gethostbyaddr(iplist)
                    print(f"Domain names {iplist} as {hostname}")
                else:
                    print("Четвертый октет первого IP адреса должен быть меньше четвертого октета второго IP адреса.")
            else:
                print("Первые три октета IP-адресов не совпадают.")
        else:
            print("Некорректно введены IP адреса.")
Добавлено через 4 часа 1 минуту
Додумался сам, но думаю как-то это не красиво)

Python
1
2
3
4
5
6
7
8
9
iplist = []
hostname = []
ipcur = ipaddress.ip_address(ip1)
while ipcur <= ipaddress.ip_address(ip2):
    iplist.append(str(ipcur))
    ipcur += 1
    addr = socket.gethostbyaddr(str(ipcur))[0]
    hostname.append(addr)
print(f"Domain names {iplist} as {hostname}")
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.06.2024, 15:16
Ответы с готовыми решениями:

Ошибка типа данных при записи SQL запроса в файл
def prepareSQL(): con=odiRef.getJDBCConnection(&quot;SRC&quot;) sql='''select name from test''' sql=sql.decode('cp1251') ...

Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных
После того, как делаю фото на мобильном клиенте некоторое время идёт загрузка и вылезает ошибка. В мобильном приложении всё работает как...

Ошибка типа данных?
&lt;?PHP $dir=scandir($_SERVER); $count=count($dir); echo $count; echo...

3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38178 / 21113 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
24.06.2024, 16:02
Сообщение об ошибке:

TypeError: gethostbyaddr() argument 1 must be str, bytes or bytearray, not tuple

Что дословно означает:

Ошибка типа: gethostbyaddr() первый аргумент должен быть строкой, байтами или байтовым массивом, а не кортежом
1
2 / 2 / 0
Регистрация: 15.12.2012
Сообщений: 126
25.06.2024, 14:49  [ТС]
Вот так сейчас выглядит мой код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def ip_checkv4(self):
        ip1 = "10.62.39.1"
        ip2 = "10.62.39.5"
        if(ip1 == "" and ip2 == ""):
            print("Начальный и конечный IP-адреса должны быть введены.")
        elif(ipaddress.ip_address(ip1) and ipaddress.ip_address(ip2)):
            ipaddress1 = ip1.split(".")
            ipaddress2 = ip2.split(".")
            if(ipaddress1[:3] == ipaddress2[:3]): # проверка на совпадение первых трех октетов
                if(ipaddress1[3] < ipaddress2[3]): # если четвертый октет меньше, то выводим диапазон
                    iplist = []
                    hostname = []
                    ipcur = ipaddress.ip_address(ip1)
                    while ipcur <= ipaddress.ip_address(ip2):
                        iplist.append(str(ipcur))
                        ipcur += 1
                        addr = socket.gethostbyaddr(str(ipcur))[0]
                        hostname.append(addr)
                    print(f"IP-адресу {iplist} соответствует доменное имя {hostname}")
                else:
                    print("Четвертый октет первого IP адреса должен быть меньше четвертого октета второго IP адреса.")
            else:
                print("Первые три октета IP-адресов не совпадают.")
        else:
            print("Некорректно введены IP адреса.")
Вопрос. Если компьютер с IP адресом 10.62.39.4 отсутствует в домене, то появляется ошибка:
Python
1
2
3
addr = socket.gethostbyaddr(str(ipcur))[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
socket.herror: [Errno 11004] host not found
Как мне сделать так, чтобы, если какой-то компьютер не доступен, то выводилось бы сообщение “ПК не доступен”.
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
25.06.2024, 15:29
Цитата Сообщение от atm87 Посмотреть сообщение
Как мне сделать так, чтобы, если какой-то компьютер не доступен, то выводилось бы сообщение “ПК не доступен”.
try - catch
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.06.2024, 15:29
Помогаю со студенческими работами здесь

Ошибка типа данных
Всем привет Выпадающий список... После подтверждения формы на внесение данных у меня не получается занести данные из этого списка...

Ошибка типа данных
Добрый вечер! Такое задание: Ввести с клавиатуры название фигуры, которую надо построить: телевизор или круг. Нарисовать и раскрасить...

Ошибка из-за типа данных
Учусь по книги Троелсена. Скорее всего ошибка из-за невнимательности, но хочется идти дальше. Сейчас работаю с наследованием. В...

Ошибка в указании типа данных
Здравствуйте! Есть простейшая программа, которая записывает данные в файл, которые вводит собсно, юзер. Но вот незадача, паскаль...

Ошибка преобразования типа данных
SELECT LOG.DocumentID, LOG.SystemTime, LOG.Type, LOG.InfoTxt, LOG.Username FROM LOG INNER JOIN REMOTEIDS ON LOG.DocumentID =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru