Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
2 / 2 / 1
Регистрация: 31.05.2014
Сообщений: 169

Ошибка: "can't convert 'nonetype' object to str implicitly"

06.03.2015, 08:53. Показов 3204. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Попросили разобраться в программе, а я для меня питон-это глухой лес. Даже не знаю в каком фрагменте кода искать ошибку.
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
import odbc
import functions
import os
import info
 
adm_dir=info.adm_dir
keys=['LISH_ID', 'DOC_NUM', 'DOC_DATE', 'PRS_DATE', 'GIBDD_CODE', 'SURNAME', 'NAME', 'PATRONIMYC',
      'OBL', 'RAI', 'IND', 'NAS_P', 'STREET', 'HOUSE', 'KORPUS', 'KV', 'DBTR_BORN', 'DBTR_SUM',
      'PAY_DATE', 'STATUS', 'KOAP_ST', 'KOAP_F', 'BORN_PLACE','OKATO','KBK','ID_DBTR_TYPE']
 
errors_dir='ERRORS'
KL_socr=[]
ST_socr=[]
 
kladr_socr=['АО','Респ','Чувашия','аал','автодорога','арбан','аул','высел','г','городок','д','дп','ж/д_будка','ж/д_казарм','ж/д_оп','ж/д_платф',
            'ж/д_пост','ж/д_рзд','ж/д_ст','жилзона','жилрайон','заимка','казарма','кв-л','кордон','кп','край','лпх','м','массив','мкр','нп',
            'обл','остров','п','п/о','п/р','п/ст','пгт','погост','починок','промзона','р-н','рзд','рп','с','с/а','с/мо','с/о','с/п','с/с','сл',
            'снт','ст','ст-ца','тер','у','х']
street_socr=['а/я','аал','аллея','аул','б-р','берег','бугор','вал','въезд','высел','городок','гск','д',  'дор','ж/д_будка','ж/д_казарм','ж/д_оп',
             'ж/д_платф','ж/д_пост','ж/д_рзд','ж/д_ст','жт','заезд','зона','казарма','канал','кв-л','км','кольцо','коса','линия','лпх','м','мкр',
             'мост','наб','нп','остров','п','п/о','п/р','пр','п/ст','парк','пер','переезд','пл','пл-ка','платф','полустанок','пр-кт','проезд','промзона',
             'просек','просека','проселок','проток','проулок','рзд','ряды','с','сад','сквер','сл','снт','спуск','ст', 'стр','тер','тракт','туп',
             'ул','уч-к','ферма','х','ш']
 
adr_cod=info.adr_cod
podr_cod=info.podr_cod
ais_podr_cod=info.ais_podr_cod
adm_dir=info.adm_dir
 
def write_ans(dc):
    if dc:
        ferr=open(adm_dir+os.sep+dc['FILE_NAME'],'a',encoding='cp1251')
        ferr.write('{0[LISH_ID]}->OK\n'.format(dc))
        ferr.close()
        print(adm_dir+os.sep+dc['FILE_NAME'])
        
def max_pack_start_seq_gibdd_id(count_rec,ip):
    seq_doc=[]
    conn_str=conn_str_list[ip]
    db=odbc.odbc(conn_str)
    cursor=db.cursor()
    #скрипт для получения номера крайнего пакета для савокупности (AGENT_CODE, AGENT_DEPT_CODE, AGENT_AGREEMENT_CODE)
    max_pack_num="select max(PACK_NUMBER) from ext_input_header where agent_code = 'ГИБДД_НСО_ИД' and agent_agreement_code='ГИБДД_НСО_ИД_СОГЛ'"
    print('резервируем номера для новых документов')
    cursor.execute('select gen_id(seq_document,1) FROM RDB$DATABASE')
    seq_doc_start=cursor.fetchall()
    seq_doc_start=seq_doc_start[0][0]
    #cursor.execute('select gen_id(seq_document,0) FROM RDB$DATABASE')
    cursor.execute('select gen_id(seq_document,'+str(int(count_rec))+') FROM RDB$DATABASE')
    seq_doc_end=cursor.fetchall()
    seq_doc_end=seq_doc_end[0][0]
    print('зарезервированы номера с',seq_doc_start,'по',seq_doc_end)
##    
    print('задаем номер пакета уникальный для савокупности (AGENT_CODE, AGENT_DEPT_CODE, AGENT_AGREEMENT_CODE)')
    cursor.execute(max_pack_num)
    res=cursor.fetchall()
    #важно если пакетов нет, создаем первый
    max_=(0 if res[0][0]==None else res[0][0])
    max_+=1
    db.close()
    print('номер пакета', max_)
    return_dict=dict(zip(("pack_num","start_seq"),(max_,seq_doc_start)))
    return(return_dict,conn_str)
 
blanc_ins_ext_id_gibdd_adm="INSERT INTO EXT_ID (ID, ORGAN, ID_NUM, ID_SUM,ID_DATE, \
ID_TYPE, DOC_DATE, AKT_DATE, DEBTOR_ADR, \
CLAIMER_ADR, DEBTOR_TYPE, \
CLAIMER_NAME, CLAIMER_TYPE, ID_SUBJ_NAME, REPEAT, \
PERIOD, ID_COPY, DELO_NUM, ORGAN_ADR, DELO_DATE, DEBTOR_NO, NO_ACCOUNT, PERIOD_SUM, DEBTOR_INN, \
DEBTOR_NAME, SROK_DOBR_PFR, ORGAN_SIGN_FIO, ORGAN_SIGN_POST, DEBTOR_BIRTH_YEAR, DEBTOR_BIRTH_DATE, \
DEBTOR_BIRTH_PLACE, DEBTOR_OGRN, BAR_CODE, DEBTOR_FIO, DEBTOR_WORK_PL, ID_SUBJ_TYPE, DEBTOR_KPP, ORGAN_CODE,KOAP_ARTICLE_NAME, DBTR_REG_DATE, DEBTOR_REG_PLACE, MISSED_PAYMENT_CHECK_DATE) \
VALUES (%s ,'{0[GIBDD_PODR]}', '{0[DOC_NUM]}', {0[DBTR_SUM]}, '{0[DOC_DATE]}', \
'3', '{0[DOC_DATE]}', '{0[DOC_DATE]}','{0[DBTR_ADR]}' , \
'{0[GIBDD_PODR_ADR]}', '{0[ID_DBTR_TYPE_INS]}', \
'{0[GIBDD_PODR]}', '2', 'Штраф гибдд', 1, NULL, NULL, \
'{0[DOC_NUM]}', NULL, NULL, NULL, NULL, NULL, NULL, '{0[DBTR_NAME]}', NULL, NULL, NULL, NULL, \
{0[DBTR_BIRTH]}, '{0[BORN_PLACE]}', NULL, NULL, '{0[DBTR_NAME]}', NULL, '37', NULL, '22',null,null,null,null);"
blanc_ins_id_head_gibdd_adm="INSERT INTO EXT_INPUT_HEADER (ID, PROCEED, AGENT_CODE, PACK_NUMBER,EXTERNAL_KEY, AGENT_DEPT_CODE, AGENT_AGREEMENT_CODE, METAOBJECTNAME, DATE_IMPORT, SOURCE_BARCODE) \
VALUES \
({0}, 0, 'ГИБДД_НСО_ИД', {1}, '{0}', '{2[AIS_PODR]}',\
'ГИБДД_НСО_ИД_СОГЛ', 'EXT_ID', NULL, NULL);"
 
def err_write(erro_info,dc):
    if dc:
        ferr=open(adm_dir+os.sep+'err_'+dc['FILE_NAME'],'a',encoding='cp1251')
        ferr.write(erro_info.format(dc))
        ferr.close()
        ferr=open(adm_dir+os.sep+dc['FILE_NAME'],'a',encoding='cp1251')
        ferr.write(erro_info.format(dc))
        ferr.close()
 
def check_fix(dc):
    try:        
        dc['GIBDD_PODR']=podr_cod[dc['GIBDD_CODE']]
        adr_keys=['NAS_P','STREET','HOUSE','KORPUS','KV','BORN_PLACE']
        for key in adr_keys:
            if dc[key]==None:
                dc[key]=''
 
        if dc['DBTR_SUM']==None:
            dc['DBTR_SUM']='Null'
        
        dc['GIBDD_PODR']=podr_cod[dc['GIBDD_CODE']]
        info.ais_podr_cod
        
        dc['AIS_PODR']=ais_podr_cod[dc['GIBDD_CODE']]
        dc['GIBDD_PODR_ADR']=adr_cod[dc['GIBDD_CODE']]
        try:
            if dc['DBTR_BORN'] and dc['ID_DBTR_TYPE']==1:
                dc['DBTR_BIRTH']="'"+dc['DBTR_BORN'].strftime('%d.%m.%Y')+"'"
            else:
                if dc['ID_DBTR_TYPE']!=2:
                    err_write('{0[LISH_ID]}•{0[DOC_NUM]}•{0[DBTR_SUM]}•{0[GIBDD_CODE]}=Дата рождения/регистрации:{0[DBTR_BORN]}\n',dc)
                else:
                    dc['DBTR_BIRTH']='NULL'
        except Exception as err:
            print(err,'check_fix')
        try:
            if dc['DOC_DATE']:
                dc['DOC_DATE']=dc['DOC_DATE'].strftime('%d.%m.%Y')
            else:
                
                err_write('{0[LISH_ID]}•{0[DOC_NUM]}•{0[DBTR_SUM]}•{0[GIBDD_CODE]}=Непонятная дата документа:{0[DOC_DATE]}\n',dc)
        except Exception as err:
            print(err,'**')                
        dc['DBTR_ADR']="{0[IND]},РОССИЯ,,,{0[NAS_P]},,{0[STREET]},{0[HOUSE]},{0[KORPUS]},{0[KV]}".format(dc)
 
        if dc['ID_DBTR_TYPE']==1:
            dc['DBTR_NAME']='{0[SURNAME]} {0[NAME]} {0[PATRONIMYC]}'.format(dc)
            dc['ID_DBTR_TYPE_INS']=2
        elif dc['ID_DBTR_TYPE']==2:
            dc['DBTR_NAME']='{0[SURNAME]}'.format(dc)
            dc['ID_DBTR_TYPE_INS']=1685
        else:
            err_write('{0[LISH_ID]}•{0[DOC_NUM]}•{0[DBTR_SUM]}•{0[GIBDD_CODE]}=Непонятен тип должника:{0[ID_DBTR_TYPE]}\n',dc)
        return(dc)
    except Exception as err:
        print(err,'--')
        return(None)
 
osp_list={'ЖЕЛЕЗНОДОРОЖНЫЙ': '10.54.122.33',
          'СОВЕТСКИЙ': '10.54.122.33',
          'ЛЕНИНСКИЙ': '10.54.122.33',
          'ПЕРВОМАЙСКИЙ': '10.54.122.33',
          'ЦЕНТРАЛЬНЫЙ': '10.54.122.33',
          'ЗАЕЛЬЦОВСКИЙ': '10.54.122.33',
          'КАЛИНИНСКИЙ': '10.54.122.33',
          'ДЗЕРЖИНСКИЙ': '10.54.122.33',
          'ОВИП': '10.54.122.33',
          'КИРОВСКИЙ': '10.54.122.33',
          'ОКТЯБРЬСКИЙ': '10.54.122.33')
 
conn_str_list={'10.54.122.33': 'Driver=Red Database/Firebird driver;UID=SYSDBA;PWD=masterkey;DBNAME=10.54.122.33/3051:ncore-fssp;'}
 
#создание массива для вставки                
def create_insert_dict():
        keys_gibdd_adm=['LISH_ID', 'DOC_NUM', 'DOC_DATE', 'PRS_DATE', 'GIBDD_CODE', 'SURNAME', 'NAME',
                        'PATRONIMYC', 'OBL', 'RAI', 'IND', 'NAS_P', 'STREET', 'HOUSE', 'KORPUS', 'KV',
                        'DBTR_BORN', 'DBTR_SUM', 'PAY_DATE', 'STATUS', 'KOAP_ST', 'KOAP_F', 'BORN_PLACE',
                        'FILE_NAME', 'ERR_CHECK', 'AIS_INS', 'DATE_INSERT', 'ID', 'FSSP_TO_GAI','OKATO','KBK','ID_DBTR_TYPE','PID']
 
        script='select * from (select t1.*,t2.id as pid from (select * from adm_gai_to_fssp where ais_ins is null and id_dbtr_type is not null ) t1  left outer join adm_gai_to_fssp_pay t2 on t1.id=t2.id) where pid is null  order by rai'
 
        try:
            print('Подключение к бд')
            db=odbc.odbc(info.conn_str_stat)
            cursor=db.cursor()
            print('курсор создан')
            cursor.execute(script)
            res=cursor.fetchall()
            print('выполнение скрипта завершено')
            return_dict_list=[]
            for line in res:
                dc_=dict(zip((keys_gibdd_adm),(line)))
                dc_=check_fix(dc_)
                if dc_!=None:
                    return_dict_list+=dc_,
        except Exception as err:
            print(err)
            return (None)
        return {'cursor':cursor,'db':db,'result':return_dict_list}
 
def insert_db(ip,mass,cursor_stat):
    print(ip,'**')
    list_of_rec=mass
 
    count=len(mass)
    if count==0:
        print('нет документов для вставки')
        return False
    sq_dp,conn_str=max_pack_start_seq_gibdd_id(count,ip)
    num=0
 
    db=odbc.odbc(conn_str)
    cursor=db.cursor()
 
    for rec in list_of_rec:
        num+=1
        seq=int(sq_dp['start_seq'])+int(num)
        try:
            cursor.execute(blanc_ins_id_head_gibdd_adm.format(seq,sq_dp['pack_num'],rec))
            cursor.execute((blanc_ins_ext_id_gibdd_adm%seq).format(rec))
            #print((blanc_ins_ext_id_gibdd_adm%seq).format(rec))
 
            #print(blanc_ins_id_head_gibdd_adm.format(seq,sq_dp['pack_num'],rec))
            cursor_stat.execute('update ADM_GAI_TO_FSSP set AIS_INS=1 where id={0}'.format(rec['ID']))
            write_ans(rec)
        except Exception as err:
            
            err_write('{0[LISH_ID]}•{0[DOC_NUM]}•{0[DBTR_SUM]}•{0[GIBDD_CODE]}=Ошибка втавки\n',rec)
            print(err)
            print(rec,"\n")
        if num%10==0:
            print(num,'из',count)
    print(num,'из',count)
    db.close()
 
otkl_list=[]
otkl_list=[]
 
def insert_osp():
    mass=create_insert_dict()
    for rai in osp_list.keys():
        ins_mass=[]
        #разбиваем по районам
        for rec in mass['result']:
            if rec['RAI']==rai and rec['RAI'] not in otkl_list:
                ins_mass+=rec,
        print(rai,'обработка массива для вставки')
        try:
            insert_db(osp_list[rai],ins_mass,mass['cursor'])
        except Exception as err:
            print (err)
 
    mass['db'].close()
 
insert_osp()
Как мне объяснили, из-за ошибки "can't convert 'nonetype' object to str implicitly" прекращается обработка файла, в связи с чем, не проходит перенос данных, которые идут после ошибки, из одной базы в другую
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.03.2015, 08:53
Ответы с готовыми решениями:

Ошибка "Can't convert 'NoneType' object to str implicitly"
Доброго времени суток, уважаемое сообщество! Очень прошу помочь найти решение, т.к. на самостоятельный поиск потратил 2 дня и вряд ли что...

Ошибка: Cannot implicitly convert type 'object' to 'char'
for(int i;i<word.Count();i++) { char c =listBox2.Items; bool isVowel = "aeiouAEIOU".IndexOf(c) >= 0; } ...

CS0029 Cannot implicitly convert type 'void' to 'str
Доброго времени суток. Я начал изучение языка, и по домашнему заданию возник такой момент. Вот часть описания задания: 1. Создайте...

7
2 / 2 / 1
Регистрация: 31.05.2014
Сообщений: 169
06.03.2015, 09:09  [ТС]
хотя, я так понимаю, ошибка в этой части?
Python
1
2
3
4
5
6
def write_ans(dc):
    if dc:
        ferr=open(adm_dir+os.sep+dc['FILE_NAME'],'a',encoding='cp1251')
        ferr.write('{0[LISH_ID]}->OK\n'.format(dc))
        ferr.close()
        print(adm_dir+os.sep+dc['FILE_NAME'])
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.03.2015, 14:01
Интерпретатор должен выдавать более подробное описание ошибки с указананием строки где возникает ошибка. Мне нужно видеть это traceback.
0
2 / 2 / 1
Регистрация: 31.05.2014
Сообщений: 169
07.03.2015, 17:25  [ТС]
Цитата Сообщение от alex925 Посмотреть сообщение
Интерпретатор должен выдавать более подробное описание ошибки с указананием строки где возникает ошибка. Мне нужно видеть это traceback.
питон 3.4, как сделать то что вы просите?
0
 Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
08.03.2015, 16:13
Цитата Сообщение от Safer54rus Посмотреть сообщение
питон 3.4, как сделать то что вы просите?
у вас выдает ошибку, вас попросили скинуть сюда полный ее текст.
0
2 / 2 / 1
Регистрация: 31.05.2014
Сообщений: 169
08.03.2015, 20:16  [ТС]
Цитата Сообщение от Zuzik Посмотреть сообщение
у вас выдает ошибку, вас попросили скинуть сюда полный ее текст.
В том и дело, что программа не вылетает с ошибкой, а смело продолжает работать, при этом перестаёт обрабатывает предыдущие данные и берёт следующие
0
 Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
08.03.2015, 20:21
Цитата Сообщение от Safer54rus Посмотреть сообщение
Как мне объяснили, из-за ошибки "can't convert 'nonetype' object to str implicitly" прекращается обработка файла,
в таком случае кто вам сказал что возникает именно эта ошибка?
0
2 / 2 / 1
Регистрация: 31.05.2014
Сообщений: 169
08.03.2015, 20:33  [ТС]
Цитата Сообщение от Zuzik Посмотреть сообщение
в таком случае кто вам сказал что возникает именно эта ошибка?
Потому что именно после этой надписи прекращается обработка данных. На скрине это видно.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.03.2015, 20:33
Помогаю со студенческими работами здесь

Cannot implicitly convert type 'object' to 'string'
Здравствуйте, подскажите пожалуйста как быть! Хочу посредством WMI занести например имя компа и ОС в базу данных, а вываливается ошибка,...

Ошибка: can only concatenate str (not "NoneType") to str
Всем привет. Подскажите пожалуйста, что за ошибка, уже второй час пытаюсь разобраться. Возникает только при вводе трёхзначных чисел с...

Ошибка error CS0029: Cannot implicitly convert type 'ClickObj' to 'UnityEngine.GameObject'
Не могу понять в чем проблема и как ее решить? using System.Collections; using System.Collections.Generic; using UnityEngine; using...

Ошибка 'NoneType' object is not subscriptable
здравствуйте, как я понял накопитель типа str_REC_f_txt_var1 += ... с использованием строки зло я прислушиваюсь....., ок ...

Ошибка 'NoneType' object has no attribute 'auser'
Необходимо автоматически прикреплять имя автора к созданной им статье. В процессе создания происходит ошибка 'NoneType' object has no...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru