【问题标题】:Python, editing csv, writing issuesPython,编辑 csv,写作问题
【发布时间】:2013-10-04 04:47:23
【问题描述】:

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

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'

这是相关部分。

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

【问题讨论】:

  • 永远不要调用变量“列表”
  • 什么是“混合两者”?
  • 是的:write() 将附加数据附加到现有文件的末尾。您不能就地更新文件。
  • 有些我有些困惑,我该如何编写一些东西来编辑某行?
  • 在第一阶段读取并在第二阶段覆盖它

标签: python csv editing


【解决方案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"

【讨论】:

    【解决方案2】:

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

    选项:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      相关资源
      最近更新 更多