Python,编辑csv,编写问题

时间:2013-10-04 04:47:24

标签: python csv editing

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

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'

这是相关部分。

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

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分:0)

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

选项:

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

  • 使用fp.seek(0)将文件指针设置回文件的位置0(开始)