在遍历文件夹中的txt文件之后得出的x y的返回值,在前面已经进行了全局声明,但在后续代码中仍显示‘not defined'
import matplotlib.pyplot as plt
import os
from mpl_toolkits.basemap import Basemap
import numpy as np
path = './pass/'
files_AlexNet_acc = []
for file_acc in os.listdir(path):
if file_acc.endswith("AlexNet_acc.txt"):
files_AlexNet_acc.append(path + file_acc)
def loadData(file):
global x, y
y = []
x = []
with open(file, 'r') as f:
print(file)
lines = f.readlines()
for line in lines:
datai = line.split()
y.append(float(datai[0]))
x.append(float(datai[1]))
return x,y
plt.figure(figsize=(10, 6))
m = Basemap()
m.drawcoastlines()
parallels = np.arange(-90., 90., 10.)
m.drawparallels(parallels, labels=[False, True, True, False])
meridians = np.arange(-180., 180., 20.)
m.drawmeridians(meridians, labels=[True, False, False, True])
lon = [list(y)]
lat = [list(x)]
lon, lat = m(lon, lat)
m.scatter(lon, lat, s=100, c="red")
plt.show()
运行结果如下:
C:\Users\14506\PycharmProjects\pythonProject1\venv\Scripts\python.exe C:/Users/14506/PycharmProjects/pythonProject1/main.py
Traceback (most recent call last):
File "C:\Users\14506\PycharmProjects\pythonProject1\main.py", line 32, in <module>
lon = [list(y)]
NameError: name 'y' is not defined
进程已结束,退出代码1
有想过是不是因为xy的变量类型不对 但是后续做出改动后仍报错
x和y未在主程序中定义,函数loadData(file)中的语句global x, y只是表示本代码块中用到的x和y是来自于全局定义,并不是对x和主的全局定义。解决方法:只需要在主程序添加对x和y赋初值的语句就可以了。
我觉得是你定义了loadData,但没调用的问题