minecraft_Eric 2023-01-16 20:40 采纳率: 50%
浏览 30
已结题

为什么python open()写不了文件?

为什么python open()写不了文件?文件打开后一片空白,close()后也没有用。源代码如下:

def event(dirpath,name):
    #./user/XXXX/XX/XX/...目录下的统计文件
    alldir=open(dirpath+'//eventall.txt','w+',encoding='UTF-8')
    if alldir.read() == '':
        alldir.write('0,0')
        alldir.close()
        del alldir
        alldir=open(dirpath+'//eventall.txt','w+',encoding='UTF-8')
        r=alldir.read()
        print(r)
        alldir.write(str(sum(list(map(float,r.split(','))))+list(float(name)))+',0')
        alldir.close()
        del alldir
event('整理','4')

运行后报错:

Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\新建文本文档 (2).py", line 14, in <module>
    event('整理','4')
  File "C:\Users\Administrator\Desktop\新建文本文档 (2).py", line 11, in event
    alldir.write(str(sum(list(map(float,r.split(','))))+list(float(name)))+',0')
ValueError: could not convert string to float: ''

img

但是后来才发现是文件一片空白,大家能帮忙看一下吗

  • 写回答

3条回答 默认 最新

  • cjh4312 2023-01-16 21:10
    关注

    你的代码中间有个del alldir,再次打开后就是空的r是空的,map(float,r.split(',')),所以就会出现你现在的错误。你本意是想分割0,0的
    还有你的list(float(name)),这个写法也是错误,再说前面sum计算以后是float,加后面list,能加吗?

    alldir.write(str(sum(list(map(float,r.split(','))))+float(4))+',0')
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月25日
  • 已采纳回答 1月17日
  • 创建了问题 1月16日