Looper не может выполнить pythonscript из-за специальных знаков (ö, ä, ±) - PullRequest
0 голосов
/ 20 сентября 2018

У меня проблемы с использованием скриптового скрипта для запуска основного скрипта несколько раз.Основной скрипт выполняется самостоятельно и выдает желаемый результат.Теперь я хочу запустить сценарий три раза, используя следующий цикл:

array = ['case1','case2','case3']
for i in range(0,len(array)):
    exec(open('mainscript.py').read())

Он корректно открывает и запускает первую часть сценария (на моем экране появляется несколько операторов print).Однако, когда я пытаюсь загрузить файл с именем 'Coördinates4hoog', он не может найти файл:

FileNotFoundError: [Errno 2] No such file or directory: 'path\Coördinates4hoog'

В этом случае я изменил входные файлы (что нежелательно, но я думал, что этобыло бы легко исправить).Я знаю, что не лучший выбор иметь такие знаки, как ö в имени файла, но в этом случае я работаю над ранее созданными сценариями и файлами данных.

Дело в том, что далее в сценарии загружается широта/ данные долготы со знаком ±.Я не могу изменить этот тип данных, так как он неоднократно извлекается из внешних баз данных.Я получаю следующую ошибку:

KeyError: "['Latitude ±dd,dddddd' 'Longitude ±ddd,dddddd'] not in index"

Кажется, что скрипт петлителя не распознает эти специальные знаки, даже если он правильно запускает основной скрипт сверху (который работает самостоятельно).Есть опыт?

1 Ответ

0 голосов
/ 20 сентября 2018

В этом случае замена спецсимволов на символы Юникода работала для меня.Поэтому, если вы столкнетесь с подобной проблемой, используйте аналогичный подход.

Итак:

df_road_coords = pd.read_pickle(filefolder + 'Coördinates4hoog')road 

Становится:

df_road_coords = pd.read_pickle(filefolder + 'Co'+u"\u00F6"+'rdinates4hoog')

И:

adresses.loc[:,'(Latitude ±dd,dddddd, Longitude ±ddd,dddddd)'] = df_receivers[['Latitude ±dd,dddddd', 'Longitude ±ddd,dddddd']].apply(lambda x : '({},{})'.format(x[0],x[1]), axis=1)

Становится:

adresses.loc[:,'(Latitude '+u"\u00B1"+'dd,dddddd, Longitude '+u"\u00B1"+'ddd,dddddd)'] = df_receivers[['Latitude '+u"\u00B1"+'dd,dddddd', 'Longitude '+u"\u00B1"+'ddd,dddddd']].apply(lambda x : '({},{})'.format(x[0],x[1]), axis=1)

Для меня это все еще абракадабра, как луперскрипт, использующий те же модули и версии, не может обрабатывать символы в другом скрипте, который выполняется сам по себе.

...