F.write不起作用

时间:2015-05-13 12:53:52

标签: python-3.x

import os,sys
import time
from colorama import Fore,Back,Style,init
init(autoreset=True)
appdata_path = os.path.join(os.getenv("APPDATA"), os.pardir)
subpath = "Local/sieosp/filesav2292.sav"
f = open(os.path.join(appdata_path, subpath), "r+")
lines=f.readlines()
a1=int (lines[116])
a2=int (lines[120])
a3=int (lines[124])
b4=int (lines[128])
c5=int (lines[132])
d6=int (lines[136])
e7=int (lines[140])
d8=int (lines[144])
d9=int (lines[148])
d10=int (lines[152])
d11=int (lines[156])
d12=int (lines[160])
total=int (a1+a2+a3+b4+c5+d6+e7+d8+d9+d10+d11+d12)
if (total)==(12):
    print("You already own every character")
else:
   with f:
    userinputvalue=int (input("Type 1 if you want to unlock every character,or 0 if you would like to close this \n"))
    if(userinputvalue)==1:    
       lines[156]=f.write("1\n")
       lines[116]=f.write("1\n")
       lines[120]=f.write("1\n")
       lines[124]=f.write("1\n")
       lines[128]=f.write("1\n")
       lines[132]=f.write("1\n")
       lines[136]=f.write("1\n")
       lines[140]=f.write("1\n")
       lines[144]=f.write("1\n")
       lines[148]=f.write("1\n")
       lines[152]=f.write("1\n")
       lines[160]=f.write("1\n")
    else:
     print("Closing")
    time.sleep(1)

所以这应该有效,对吗?不知道f.write为什么不写1到我的文件。我用它非常错吗?搜索谷歌周围的一些更多的信息,但我不明白一件事:/试图使用f.write作为f.readlines但没有运气。感谢

2 个答案:

答案 0 :(得分:0)

看起来你不能在写模式下打开文件,只能在读模式下打开文件。

f = open(os.path.join(appdata_path,subpath)," r +")

更改" r"到了" w"

答案 1 :(得分:0)

您已使用" r +"打开文件,因此文件甚至可写,问题是如果您使用" r +"打开文件你必须管理文件中的指针,否则字符串将在最后附加。

为了管理它,您必须使用此处所述的f.seek(offset, from_what)功能Input and Output

例如,在此代码中,我只更改文件的第一行:

f = open("File/Path/file.txt", "r+")
f.seek(0,0)
f.write("something")
f.close()

你也使用line[N] = f.write("something"),小心地以这种方式使用它,因为它返回写入的字符数,而不是写入的字符;)