由于特殊符号(ö,ä,±),循环程序无法执行pythonscript

2024-09-28 22:25:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用循环器脚本运行主脚本几次时遇到问题。主脚本自己运行并生成所需的输出。现在,我想使用以下循环运行脚本三次:

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

它正确地打开并运行脚本的第一部分(几个print语句最终出现在我的屏幕上)。但是,当我尝试加载名为“Coöordinates 4hoog”的文件时,它找不到该文件:

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

在这种情况下,我已经更改了输入文件(这是不可取的,但我认为这将是一个简单的修复)。我知道在文件名中使用像ö这样的符号并不是最好的选择,但是在这个例子中,我正在处理以前制作的脚本和数据文件。你知道吗

关键是,在脚本中,它用±号加载纬度/经度数据。我无法更改此数据类型,因为它是从外部数据库重复检索的。我得到以下错误:

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

似乎looper脚本无法识别这些特殊的符号,即使它正确地从顶部运行主脚本(它自己在工作)。有这方面的经验吗?你知道吗


Tags: 文件in脚本forlen符号rangeopen
1条回答
网友
1楼 · 发布于 2024-09-28 22:25:30

在本例中,将特殊符号更改为unicode字符对我很有效。因此,如果遇到类似的问题,请使用类似的方法。你知道吗

所以:

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)

对我来说,一个使用相同模块和版本的looperscript无法处理另一个自己运行的脚本中的符号,这仍然是个难题。你知道吗

相关问题 更多 >