網站首頁 編程語言 正文
前言
其實就是個小問題,但是爆出來的時候也很莫名其妙。因為之前都跑得好好的,只是換了不同的文件去跑才出的問題,關鍵是不同的文件要處理的內容和格式都是完全一樣的,一個順利跑完,一個就報TypeError: ‘float’ object is not subscriptable這個錯,就非常無語。接下來就是看看怎么解決問題了:
一開始自然是直接搜索問題,尋找解決辦法,實話實說,看了一些博客,但是并沒有直接找到解決辦法,但是從中獲得了一些想法,對問題理解更清楚一點。下面是找到的一種解釋:
然后說一下我的具體應用:
我需要從預測生成的 json文件獲取預測分數score和預測位置(坐標值)把它們寫入txt文檔:
ff = open('xx.txt','w')
for anno in annos:
score = anno['score']
left,top,right,bottom = anno['box']
ff.write("%s %s %s %s %s\n" %(score[:6], str(int(left)), str(int(top)),str(int(right)),str(int(bottom))))
ff.close()
json文件內容格式:
{ "annos":[ { "score":0.999976544, "box":[ 145.436234753274657 456.312645236453657 254.327564356457435 553.957943578765678 ] }, { "score":0.9996542376, "box":[ 344.436234753274657 987.312645236453657 423.327564356457435 234.957943578765678 ] }, ... ] }
具體問題是在執行寫入的時候出現的:
ff.write("%s %s %s %s %s\n" %(score[:6], str(int(left)), str(int(top)),str(int(right)),str(int(bottom))))
一開始我的關注點是放在box的內容讀取上,他是四個浮點數位于一個列表下,而且搜到的方法也和列表內容相關
后面通過我的控制變量試驗后發現這里是沒問題的,所以問題就是score[:6]的寫入報了錯
我的解決辦法是:
"""先把讀取到的score轉化為字符,再進行寫入"""
xx = str(anno['score'])
ff.write("%s %s %s %s %s\n" %(xx[:6], str(int(left)), str(int(top)),str(int(right)),str(int(bottom))))
如上就可以順利執行了,沒報TypeError: ‘float’ object is not subscriptable
原先想過,直接把str加在最后一句上,即:
ff.write("%s %s %s %s %s\n" %(str(score[:6]), str(int(left)), str(int(top)),str(int(right)),str(int(bottom))))
發現還是會報錯,也就是說直接寫的時候讀的不能是浮點型數據(可能是此處直接從annos的列表中讀取出來的浮點數據不能直接處理),即使經過中間處理也不行,需要轉化為字符型后再寫入即可解決
其實這個問題更像一個bug,并不是一定會出現的問題,如果報錯了,
就要花時間解決一下。
總結
原文鏈接:https://blog.csdn.net/qq_44442727/article/details/126479409
相關推薦
- 2022-07-21 Pandas文件讀寫操作
- 2022-03-12 Nginx熱部署的實現_nginx
- 2023-01-15 GoLang內存泄漏原因排查詳解_Golang
- 2023-07-14 elemment ui tabs實現思路
- 2022-03-29 帶你了解C++中vector的用法_C 語言
- 2022-11-07 PostgreSQL常用優化技巧示例介紹_PostgreSQL
- 2022-10-14 Ubuntu18.04使用Xorg創建虛擬屏幕
- 2023-07-07 CreateObject創建vbs對象時不支持中文而報錯
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支