часть кода не работает в версии 2.7
Не могу понять в чем проблема, следующая часть кода работает в python 3 под win 10, однако когда я пытаюсь запустить его в python 2.7.5 на linux получаю ошибку:
NameError: name 'pathSDU' is not defined
import re
dictSDU = {}
dictSCI = {}
for file in os.listdir('/foo/bar/'):
with open(os.path.join('/foo/bar/', file), 'r') as eddsFile:
print('opening file ' + file)
for line in eddsFile:
if re.findall(r'\w+/ACS/SDU_:$', line):
pathSDU = line
pathSDU = pathSDU[:-2]
print(pathSDU)
elif re.findall(r'\w+/ACS/ScienceDataFile:$', line):
pathSCI = line
pathSCI = pathSCI[:-2]
print(pathSCI)
if 'SDU__DACS' in line:
dictSDU.update({line: pathSDU})
dictSDU = {re.sub(r'\d+ \d+-\d+-\d+ \d+:\d+', '', key).strip(':\n\r').replace(' ', ''): value.strip(':\n') for key, value in
dictSDU.items()}
print(dictSDU)
if 'SCI__DACS' in line:
dictSCI.update({line: pathSCI})
dictSCI = {re.sub(r'\d+ \d+-\d+-\d+ \d+:\d+', '', key).strip(':\n\r').replace(' ', ''): value.strip(':\n') for key, value in
dictSCI.items()}
print(dictSCI)
Ответы (1 шт):
Автор решения: stickmann
→ Ссылка
Объявил pathSDU, pathSCI, убрал поиск через re, видимо что-то не так с регулярным выражением, решил не усложнять.
import os
import re
dictSDU = {}
dictSCI = {}
pathSDU = ''
pathSCI = ''
for file in os.listdir('/foo/bar/'):
with open(os.path.join('/foo/bar/', file), 'r') as eddsFile:
print('opening file ' + file)
for line in eddsFile:
if '/ACS/SDU_:' in line:
pathSDU = line
pathSDU = pathSDU[:-2]
print(pathSDU)
elif '/ACS/ScienceDataFile:' in line:
pathSCI = line
pathSCI = pathSCI[:-2]
print(pathSCI)
if 'SDU__DACS' in line:
dictSDU.update({line: pathSDU})
dictSDU = {re.sub(r'\d+ \d+-\d+-\d+ \d+:\d+', '', key).strip(':\n\r').replace(' ', ''): value.strip(':\n') for key, value in
dictSDU.items()}
print(dictSDU)
if 'SCI__DACS' in line:
dictSCI.update({line: pathSCI})
dictSCI = {re.sub(r'\d+ \d+-\d+-\d+ \d+:\d+', '', key).strip(':\n\r').replace(' ', ''): value.strip(':\n') for key, value in
dictSCI.items()}
print(dictSCI)