Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/121: Рейтинг темы: голосов - 121, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 01.09.2014
Сообщений: 29

Как подключить config файл к питон скрипту?

18.10.2014, 21:27. Показов 24803. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Как подключить config файл к питон скрипту? Скрипт не я писал, и что - то он мне выдает такую ошибку:

Usage: myfile.py CONFIG-FILE

Это печатает эта часть скрипта:
Python
1
2
3
if len(sys.argv) != 2:
        print "Usage: myfile.py CONFIG-FILE"
        sys.exit(1)
То есть config файл должен передаваться как аргумент, но нету ни намека на это в скрипте... Хотя автор завляет что скрипт рабочий... Не могу запустить...

Вот еще проверил,

This is the name of the script: E:\Python27\myfile.py
Number of arguments: 1
The arguments are: ['E:\\Python27\\myfile.py']
Usage: myfile.py CONFIG-FILE

В качестве аргумента система воспринимает только имя самого скрипта... Как подключить config файл? Нигде толком не написано...

Спасибо.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.10.2014, 21:27
Ответы с готовыми решениями:

Как подключить прокси к скрипту по автокликеры тг?
Доброго времени суток. Есть у меня скрипт для оценки пользователей в боте тг "Бибинто". У меня блок на IP закинули, поэтому при...

Как подключить питон к html
Есть html, пытаюсь подключить код код питона: <!doctype html> <html> <head> <script src="brython.js"></script> ...

Как подключить питон на openserver
Как подключить питон на openserver?

14
 Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
18.10.2014, 21:47
Вы должны запускать скрипт таким образом myfile.py "путь к скрипту". ( возможно без кавычек)
0
 Аватар для sanodins
52 / 51 / 15
Регистрация: 27.06.2013
Сообщений: 192
Записей в блоге: 1
18.10.2014, 21:50
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def loadConfig():
    import ConfigParser
    config = ConfigParser.ConfigParser()
    config.read('config.ini')
    login = config.get('connect', 'login')
    pas = config.get('connect', 'pas')
 
    return {'login':login,'pas':pas}
 
config = loadConfig()
 
 
 
log = config['login']
pas = config['pas']
 
print log, pas
config.ini
Python
1
2
3
[connect]
login = san
pas = Kas
0
0 / 0 / 0
Регистрация: 01.09.2014
Сообщений: 29
18.10.2014, 22:02  [ТС]
Спасибо. Попробую. Пробовал уже в консоли IDLE запускать в строке с путем к файлу. Пишет ошибка и все тут... Если файл не заперт, то наверное пароль не обязательно? Ну можно по всякому попытать...

Спасибо. Прогуляюсь, потом попробую. Что выйдет, отпишу.
0
 Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
18.10.2014, 22:10
Не сможете решить проблему - может киньте скрипт сюда, или его начало ( если он большой). И скажите как вы запускаете его.
Запуск должен ( способ который точно рабочий) быть такой - в коммандной строке ( cmd.exe, рискну предположить что у вас винда, я думаю я не ошибаюсь), которая открывается с помощью пуск --- выполнить--- cmd.exe ( в 8 как то по другому). набираете следующую вещь: python myfile.py "путь к конфиг файлу". Кавычки обязательны.
0
0 / 0 / 0
Регистрация: 01.09.2014
Сообщений: 29
19.10.2014, 00:00  [ТС]
Итак... Все там же пока. Ни так ни сяк...

Картинку приложил. И снова видит только один аргумент...
Миниатюры
Как подключить config файл к питон скрипту?  
0
0 / 0 / 0
Регистрация: 01.09.2014
Сообщений: 29
19.10.2014, 00:02  [ТС]
Со скобками, без скобок... Пофигу ему...
0
 Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
19.10.2014, 01:11
Лучший ответ Сообщение было отмечено RealConsoler как решение

Решение

Судя по скрину - вы просто невнимательны немного. В пути к файлу скрипта сделали ошибку. Букву О вместо I поставьте
1
0 / 0 / 0
Регистрация: 01.09.2014
Сообщений: 29
19.10.2014, 01:26  [ТС]
А точно... Везде Pythin мерещится...

Добавлено через 8 минут
Спасибо друзья. Эту заморочку проехали. Все понятно. Конфиг файл как аргумент прошел, прочитался, дальше там снова во что - то уперлось... Не описана говорит функция... Плин... Скрипт я в инете нашел... тема как раз то что мне нужно... Он большой, но вот упирается местами... Буду дальше разгадывать... Или авторов привлечь поискать... Но он ше в 2011 написан...
Спасиба всем!!!
0
 Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
19.10.2014, 01:33
Не разберешся - кидай скрипт полностью сюда, и текст ошибок.
1
0 / 0 / 0
Регистрация: 01.09.2014
Сообщений: 29
19.10.2014, 01:42  [ТС]
Спасибо, хван на сегодня... Спать надо... Вот все хочу с этим делом разобраться... Если бы вы знали что это...Скрипт для майнинга биткойнов... Хочу попробовать. Почти месяц вникал, как это все работает. Очень трудно. Это как бы пишут основной скрипт,чтобы понять... Он медленный, для майнинга годился года 3 назад, когда битки только появились. С официального сайта, и вот нифига не работает...
0
0 / 0 / 0
Регистрация: 01.09.2014
Сообщений: 29
19.10.2014, 23:32  [ТС]
Итак... Тут снова стопор в другой части скрипта. Скрипт не суперсекретный в обчем... Вот он:

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
#!/usr/bin/env python
# -*- coding: Windows-1251 -*-
#
# Copyright 2011 Jeff Garzik
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; see the file COPYING.  If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
#
 
import time
import json
import pprint
import hashlib
import struct
import re
import base64
import httplib
import sys
from multiprocessing import Process
import ConfigParser
 
 
print "This is the name of the script: ", sys.argv[0]
print "Number of arguments: ", len(sys.argv)
print "The arguments are: " , str(sys.argv)
 
 
config = ConfigParser.RawConfigParser()
config.read('E:\Python27\cfgmining.cfg')
hashmeter = config.getint('Section1', 'hashmeter')
scantime = config.getint('Section1', 'scantime')
threads = config.getint('Section1', 'threads')
rpcpass = config.getint('Section1', 'rpcpass')
rpcuser = config.get('Section1', 'rpcuser')
port = config.getint('Section1', 'port')
host = config.get('Section1', 'host')
print host, port
 
ERR_SLEEP = 15
MAX_NONCE = 1000000L
 
settings = {}
pp = pprint.PrettyPrinter(indent=4)
 
class BitcoinRPC:
    OBJID = 1
 
    def __init__(self, host, port, username, password):
        authpair = "%s:%s" % (username, password)
        self.authhdr = "Basic %s" % (base64.b64encode(authpair))
        self.conn = httplib.HTTPConnection(host, port, False, 30)
    def rpc(self, method, params=None):
        self.OBJID += 1
        obj = { 'version' : '1.1',
            'method' : method,
            'id' : self.OBJID }
        if params is None:
            obj['params'] = []
        else:
            obj['params'] = params
        self.conn.request('POST', '/', json.dumps(obj),
            { 'Authorization' : self.authhdr,
              'Content-type' : 'application/json' })
 
        resp = self.conn.getresponse()
        if resp is None:
            print "JSON-RPC: no response"
            return None
 
        body = resp.read()
        resp_obj = json.loads(body)
        if resp_obj is None:
            print "JSON-RPC: cannot JSON-decode body"
            return None
        if 'error' in resp_obj and resp_obj['error'] != None:
            return resp_obj['error']
        if 'result' not in resp_obj:
            print "JSON-RPC: no result in object"
            return None
 
        return resp_obj['result']
    def getblockcount(self):
        return self.rpc('getblockcount')
    def getwork(self, data=None):
        return self.rpc('getwork', data)
 
def uint32(x):
    return x & 0xffffffffL
 
def bytereverse(x):
    return uint32(( ((x) << 24) | (((x) << 8) & 0x00ff0000) |
            (((x) >> 8) & 0x0000ff00) | ((x) >> 24) ))
 
def bufreverse(in_buf):
    out_words = []
    for i in range(0, len(in_buf), 4):
        word = struct.unpack('@I', in_buf[i:i+4])[0]
        out_words.append(struct.pack('@I', bytereverse(word)))
    return ''.join(out_words)
 
def wordreverse(in_buf):
    out_words = []
    for i in range(0, len(in_buf), 4):
        out_words.append(in_buf[i:i+4])
    out_words.reverse()
    return ''.join(out_words)
 
class Miner:
    def __init__(self, id):
        self.id = id
        self.max_nonce = MAX_NONCE
 
    def work(self, datastr, targetstr):
        # decode work data hex string to binary
        static_data = datastr.decode('hex')
        static_data = bufreverse(static_data)
 
        # the first 76b of 80b do not change
        blk_hdr = static_data[:76]
 
        # decode 256-bit target value
        targetbin = targetstr.decode('hex')
        targetbin = targetbin[::-1] # byte-swap and dword-swap
        targetbin_str = targetbin.encode('hex')
        target = long(targetbin_str, 16)
 
        # pre-hash first 76b of block header
        static_hash = hashlib.sha256()
        static_hash.update(blk_hdr)
 
        for nonce in xrange(self.max_nonce):
 
            # encode 32-bit nonce value
            nonce_bin = struct.pack("<I", nonce)
 
            # hash final 4b, the nonce value
            hash1_o = static_hash.copy()
            hash1_o.update(nonce_bin)
            hash1 = hash1_o.digest()
 
            # sha256 hash of sha256 hash
            hash_o = hashlib.sha256()
            hash_o.update(hash1)
            hash = hash_o.digest()
 
            # quick test for winning solution: high 32 bits zero?
            if hash[-4:] != '\0\0\0\0':
                continue
 
            # convert binary hash to 256-bit Python long
            hash = bufreverse(hash)
            hash = wordreverse(hash)
 
            hash_str = hash.encode('hex')
            l = long(hash_str, 16)
 
            # proof-of-work test:  hash < target
            if l < target:
                print time.asctime(), "PROOF-OF-WORK found: %064x" % (l,)
                return (nonce + 1, nonce_bin)
            else:
                print time.asctime(), "PROOF-OF-WORK false positive %064x" % (l,)
#               return (nonce + 1, nonce_bin)
 
        return (nonce + 1, None)
 
    def submit_work(self, rpc, original_data, nonce_bin):
        nonce_bin = bufreverse(nonce_bin)
        nonce = nonce_bin.encode('hex')
        solution = original_data[:152] + nonce + original_data[160:256]
        param_arr = [ solution ]
        result = rpc.getwork(param_arr)
        print time.asctime(), "--> Upstream RPC result:", result
 
    def iterate(self, rpc):
        work = rpc.getwork()
        if work is None:
            time.sleep(ERR_SLEEP)
            return
        if 'data' not in work or 'target' not in work:
            time.sleep(ERR_SLEEP)
            return
 
        time_start = time.time()
 
        (hashes_done, nonce_bin) = self.work(work['data'],
                             work['target'])
 
        time_end = time.time()
        time_diff = time_end - time_start
 
        self.max_nonce = long(
            (hashes_done * settings['scantime']) / time_diff)
        if self.max_nonce > 0xfffffffaL:
            self.max_nonce = 0xfffffffaL
 
        if settings['hashmeter']:
            print "HashMeter(%d): %d hashes, %.2f Khash/sec" % (
                  self.id, hashes_done,
                  (hashes_done / 1000.0) / time_diff)
 
        if nonce_bin is not None:
            self.submit_work(rpc, work['data'], nonce_bin)
 
    def loop(self):
        rpc = BitcoinRPC(settings['host'], settings['port'],
                 settings['rpcuser'], settings['rpcpass'])
        if rpc is None:
            return
 
        while True:
            self.iterate(rpc)
 
def miner_thread(id):
    miner = Miner(id)
    miner.loop()
 
if __name__ == '__main__':
    if len(sys.argv) != 2:
        print "Usage: pyminer.py CONFIG-FILE"
        sys.exit(1)
 
    f = open(sys.argv[1])
    for line in f:
        # skip comment lines
        m = re.search('^\s*#', line)
        if m:
            continue
 
        # parse key=value lines
        m = re.search('^(\w+)\s*=\s*(\S.*)$', line)
        if m is None:
            continue
        settings[m.group(1)] = m.group(2)
    f.close()
 
    if 'host' not in settings:
        settings['host'] = '127.0.0.1'
    if 'port' not in settings:
        settings['port'] = 8333
    if 'threads' not in settings:
        settings['threads'] = 1
    if 'hashmeter' not in settings:
        settings['hashmeter'] = 0
    if 'scantime' not in settings:
        settings['scantime'] = 30L
    if 'rpcuser' not in settings or 'rpcpass' not in settings:
        print "Missing username and/or password in cfg file"
        sys.exit(1)
 
    settings['port'] = int(settings['port'])
    settings['threads'] = int(settings['threads'])
    settings['hashmeter'] = int(settings['hashmeter'])
    settings['scantime'] = long(settings['scantime'])
 
    thr_list = []
    for thr_id in range(settings['threads']):
        p = Process(target=miner_thread, args=(thr_id,))
        p.start()
        thr_list.append(p)
        time.sleep(1)           # stagger threads
 
    print settings['threads'], "mining threads started"
 
    print time.asctime(), "Miner Starts - %s:%s" % (settings['host'], settings['port'])
    try:
        for thr_proc in thr_list:
            thr_proc.join()
    except KeyboardInterrupt:
        pass
    print time.asctime(), "Miner Stops - %s:%s" % (settings['host'], settings['port'])

Так. Что получается в итоге. Начальную проблему с конфиг скриптом успешно решили. Далее была заминка с неопределенной функцией Process, я нашел как это решить, надо было импортировать multiprocessing (снова непонятно, зачем те, кто выложил это, так вредничают...Ведь если у них это работало, зачем извлекать ключевые вещи...).

Итак, скрипт поехал дальше. Теперь от пишет, как видно из прикрепленного скрина, KeyError, то есть нет в массиве параметров... Куда делись?! Ведь я проверил печатью, что из конфига они грузятся, и host, и port... Далее.

Скрипт успешно свзывается с сервером и получает задание (на сервере это зафиксировано). Потом пишет что host нет... И сбрасывает выполнение задания. Но ведь он с ним связался и успешно получил работу... Что за фигня?!

У кого есть какие идеи, как это далее исправить. В общем скрипт сбрасывает на каком - то этапе выполнение задания полученного от сервера... Смотрите картинку. Из соображений конфиденциальности IP сервера затер, остальное не секретно в принципе, раз лежит в сети.
Миниатюры
Как подключить config файл к питон скрипту?  
0
0 / 0 / 0
Регистрация: 01.09.2014
Сообщений: 29
21.10.2014, 00:27  [ТС]
так... рою дальше. все идет, но застревает в том месте, где задается 'content-type' : 'application/json'. тут значит это будет 73 строка. Консоль пишет, что инвалид адрес... Хотя адрес правильный самого сервера, я правда много поменял, сейчас то же, но я немного поправил некоторые моменты...

Почему не признает адрес?
0
 Аватар для Wolkodav
842 / 480 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
22.10.2014, 22:56
RealConsoler, да просто объекте( думаю dict) settings нету такого ключа как "host", почему нету, это уже хз. Адрес он не признает т.к. его просто нету....
1
0 / 0 / 0
Регистрация: 01.09.2014
Сообщений: 29
23.10.2014, 00:50  [ТС]
Спасибо за поддержку. Я нашел в чем баг. До обидного все просто. Я зарегился на американо-канадском сервере, они меня просто сбрасывали... ХЗ, как говорят, то ли политика то ли что... Потому скрипт к серверу подключается, а потом меня на ... посылают... Я это случайно понял, нашел другую программу, она стала показывать то же самое, сброс. Тогда я понял. Зарегился на польском сервере, и все пошло. В обчем человеческий фактор. Враги плин... Но мы ж к ним так не относимся, зачем они к нам?... Но еще говорят, что по методу getwork (для майнинга) не все сервера подпускают, он типа устаревший... Используют сейчас gettemplate. ну я то для того чтобы просто понять для начала... Может это.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.10.2014, 00:50
Помогаю со студенческими работами здесь

Как подключить Джанго к Питон?
К примеру, если я хочу делать расчёты с помощью библиотеки pandas и выводить результат на веб-страничку. Это возможно вообще? Если да,...

Отправьте C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config данный файл
Из-за отсутствия данного файла не работают приложения. Буду благодарен за помощь. Прикрепите machine.config именно .NET Framework...

Как подключить UWP к существующему проекту (Xamarin, firebase, Remote Config)
Изучаю статью - Firebase Remote Config in Xamarin Forms (проект - XF-Firebase-RemoteConfig--github.com) В решение входят проекты:...

Подключить кнопку с скрипту (2D)
Пробую сделать главное меню по статье: https://sharpcoderblog.com/blog/unity-3d-create-main-menu-with-ui-canvas Остановился на...

Как с консоли (linux) отправить скрипту csv файл?
как с консоли ( linux ) отправить скрипту csv файл? как его правильно в php принять?


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru