变量未在文件中更新其值?

2024-10-02 18:16:55 发布

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

所以。。。我现在正在学习python。我试图创建一个保存变量值的文件(文件是arqLog,变量是novoArq),但问题是:变量值用+1更新,但它不会发生在文件中。我希望变量在文件中更新,这样我就可以将它作为字符串添加到.dat文件名中,并创建某种备份,以便程序从停止的位置继续创建.datx文件。 (Python 3.4版)

x = []
y = []
novoArq = 1

cwd = os.getcwd()

def main():
    global novoArq
    global cwd
    resposta = eval(input('\nChose one of the options below:\n\n1. Create data\n2. Plot data\n3. Quit\n\n--> '))
    if resposta == 1:
        try:
            os.mkdir('coordenadas')
            arqLog = open(cwd+'/coordenadas/dat.log','w')
            print('\nA new folder has been created: '+cwd+'/coordenadas')
            arqLog.write(str(novoArq))
            arqLog = open(cwd+'/coordenadas/dat.log','r')
            arqLog2 = arqLog.read()
            x = input('\nType the values for X separated by coma (ex: -10,2.3,5): ')
            y = input('\nType the values for Y separated by coma (ex: -10,2.3,5): ')
            arqx = open(cwd+'/coordenadas/x.dat'+arqLog2,'w')
            arqx.write(x)
            arqx.close()
            arqy = open(cwd+'/coordenadas/y.dat'+arqLog2,'w')
            arqy.write(y)
            arqy.close()
            print("\nThese values were saved: "+cwd+"/coordenadas/x.dat"+arqLog2+" e y.dat"+arqLog2)
            arqLog.close()
            novoArq+=1
            main()
        except:
            arqLog = open(cwd+'/coordenadas/dat.log','r')
            arqLog2 = arqLog.read()
            x = input('\nType the values for X separated by coma (ex: -10,2.3,5): ')
            y = input('\nType the values for Y separated by coma (ex: -10,2.3,5): ')
            arqx = open(cwd+'/coordenadas/x.dat'+arqLog2,'w')
            arqx.write(x)
            arqx.close()
            arqy = open(cwd+'/coordenadas/y.dat'+arqLog2,'w')
            arqy.write(y)
            arqy.close()
            print("\nEsses dados foram arquivados em "+cwd+"/coordenadas/x.dat"+arqLog2+" e y.dat"+arqLog2)
            arqLog.close()
            novoArq+=1
            main()

当我打印novoArq时,它输出一个更新的值,但是当我打印arqLog2时,它每次输出1。你知道吗


Tags: 文件thecloseinputopendatwritevalues
2条回答

只有在os.mkdir('coordenadas')没有失败的情况下才写novoArq。你知道吗

它在第一次之后就失败了,所以只写1。你知道吗

我认为这是问题的根源:

arqLog = open(cwd+'/coordenadas/dat.log','w')
print('\nA new folder has been created: '+cwd+'/coordenadas')
arqLog.write(str(novoArq))  
arqLog = open(cwd+'/coordenadas/dat.log','r')

您正在打开文件数据日志如果你想写,那么在关闭它之前,你先打开它读

您应该先关闭文件,然后再重新打开以进行读取:

arqLog = open(cwd+'/coordenadas/dat.log','w')
print('\nA new folder has been created: '+cwd+'/coordenadas')
arqLog.write(str(novoArq))  
argLog.close() # **CLOSE THE FILE AFTER WRITE THEN OPEN IT**
arqLog = open(cwd+'/coordenadas/dat.log','r')

相关问题 更多 >