-1

我一直在尝试写一个简单的东西来管理项目。我坚持的是编辑功能。

def edit_assignment():
check()
if os.path.exists(fdir):    
    list_assignment()
    file = open(fdir,'r+')
    list = file.readlines()
    line_edit = int(raw_input('line to edit: '))
    list[line_edit] = 'x'
    new_list = "\r\n".join(list)
    file.write(new_list)
    file.close()
else:
    print 'error'

那是相关的部分。

当我运行它时,发生的情况是,它不是重新编写文件,而是混合了两者。我不明白我做错了什么,任何帮助将不胜感激。

4

2 回答 2

1

你可以这样做:

if os.path.exists(fdir):
    lines = open(fdir, "r").readlines()
    line_no = int(raw_input("line: "))
    lines[line_no] = "x"
    open(fdir, "w").write("".join(lines))
else:
    print "error"
于 2013-10-04T05:13:22.163 回答
0

您正在使用 'r+' 打开文件进行读写。读取现有文件后,所有进一步的写操作都将发生在文件指针的位置 - 这是文件的结尾。这就是您获得检测到的行为的原因。

选项:

  • 打开文件,读取行,关闭文件,打开文件进行写入,写入行,关闭文件

或者

  • 使用 fp.seek(0) 将文件指针设置回文件的位置 0(开始)
于 2013-10-04T05:27:42.507 回答