我遇到了一个错误,但我不太清楚问题是什么以及为什么会出现此错误。在我的脚本中,我让用户输入一个文本文件,然后从该文本文件创建一个数据表。我分别提取并保存数据表的各列之一(我已经“合并”了导致错误的输入,使其变得更容易了。)
**File_Names=[]**
print('Enter name of peaklist files. When finished, type done and enter to stop.')
while True:
Titration_file_input = input()
if Titration_file_input.lower() not in ['done']:
Titration_files.append(Titration_file_input)
else:
break
for Data in Titration_files:
try:
Titration_Datatable = pd.read_csv(Data, sep='\s+', header=None)
Titration_Datatable.columns=['Column_1','Column_2','Column_3', 'Column_4', 'Column_5']
Data_Table.append(Titration_Datatable)
except:
print('File' + ' ' + Data + ' ' + 'not found')
for Titration_Datatable in Data_Table:
Peak_Height.append(Titration_Datatable.loc[:,'Column_4'])
**File_Names.append(Titration_Datatable.loc[:,'Column_1'].drop([0],axis=0).drop([1],axis=0))**
然后我稍后将其称为生成的图形的保存文件的标题。
for values,i in zip(Titration_Data,File_Names):
Intensity=[values]
Intensity_Array=np.array(Intensity)
y=Intensity_Array.flatten()
popt, pcov = curve_fit(fun, x, y)
kD.append(popt)
fun_data=fun(x,*popt)
output_for_graphing.append(fun_data)
residuals=y-fun(x, popt)
ss_res=np.sum(residuals**2)
ss_tot=np.sum((y-np.mean(y))**2)
r_squared=1-(ss_res/ss_tot)
r2.append(r_squared)
std = np.sqrt(np.diag(pcov))
standard_deviation.append(std)
plt.plot(x, y, label='data')
plt.plot(x, fun(x, *popt), label='fitted')
plt.xlabel('Ligand Concentration')
plt.ylabel('Intensity')
plt.title([i])
plt.grid()
plt.legend()
**files_to_save=str([i])+'.png'
plt.savefig(files_to_save)**
plt.show()
我得到的错误是:
plt.savefig(files_to_save)
OSError: [Errno 22] Invalid argument: '[2 1XH-HN\n3 2XH-HN\n4 3XN-HN\n5 4XN-HN\n6 5XN-HN\n7 6XN-HN\n8 7XN-HN\n9 8XN-HN\nName: Column_1, dtype: object].png'
我认为可能是格式问题,如果我将其放入列表或数组中就可以使用。但是,当我将其更改为数组时,这是我得到的错误:
plt.savefig(files_to_save)
OSError: [Errno 22] Invalid argument: "[array(['1XH-HN', '2XH-HN', '3XN-HN', '4XN-HN', '5XN-HN', '6XN-HN',\n '7XN-HN', '8XN-HN'], dtype=object)].png"
在这一点上,我不知道为什么会出现格式错误。我唯一想到的是plt.savefig不接受连字符,或者它不能读取连字符(例如,只需定义要使用的编码)?提前谢谢你!
答案 0 :(得分:1)
您正在尝试保存一个文件
[2 1XH-HN \ n3 2XH-HN \ n4 3XN-HN \ n5 4XN-HN \ n6 5XN-HN \ n7 6XN-HN \ n8 7XN-HN \ n9 8XN-HN \ n名称:列_1,dtype:对象] .png
您不能保存带有方括号,反斜杠和冒号的文件。 str[i]
返回文件名列表,这就是您出错的地方。也许尝试
for ix, (values,i) in enumerate(zip(Titration_Data,File_Names)):
# etc
然后,您将可以使用数字str[ix]
进行索引。我认为您使用的是zip
错误。这是一个简单的示例:
a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
for ix, (i, ii) in enumerate(zip(a, b)):
print('ix:', ix, 'i:', i, 'ii:', ii)
ix: 0 i: 1 ii: 5
ix: 1 i: 2 ii: 6
ix: 2 i: 3 ii: 7
ix: 3 i: 4 ii: 8