Python以Append模式打开文件。从不写

2024-05-05 09:50:22 发布

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

我已经在这里待了几天了。我想做的是:

  1. 以附加模式打开已存在的csv文件
  2. 在底部添加一个csv的新行(下面是“buffer”)
  3. 关闭文件
  4. 重命名反映上次输入数据的日期的文件。在

我的代码片段:

if mode == 'a':
    print buffer
    print fn
    f = open(fn,mode)
    f.write(buffer)
    #f.write("\nfoo,bar")
    f.close()
    print f.closed
    os.rename(".\\out\\" + fn, ".\\out\\" + fn[0:17]+tdy[0:4]+ "_" + tdy[5:7] + "_" + tdy[8:10] + ".csv")

附加信息:

  • mode确实=='a'它到达循环。

  • buffer打印。打印为多行csv数据的字符串,如:

    foo, bar, foo, bar
    foo, bar, foo, bar
    foo, bar, foo, bar
    
  • fn是我试图打开并打印的正确文件名。

  • f.closed返回True

  • os.rename工作并重命名文件。当我打开它时,缓冲区还没有被追加。

  • 我尝试在close之前添加一个flush()

  • 我试过没有改名。

  • 我试图附加一个硬编码的字符串。

有什么想法吗?在


Tags: 文件csv数据closefooosmodebuffer
1条回答
网友
1楼 · 发布于 2024-05-05 09:50:22

您正在处理两个文件。在

您打开fncurrent目录中写入,但是您重命名了文件'.\out\' + fn。在

打开fn时,请确保使用了正确的目录:

f = open(r'.\out\' + fn ,mode)

请注意,在Windows上,您也可以使用/分隔符,这更容易处理,因为您不必使用原始字符串或转义斜杠。另外,最好使用os.path.join()来处理目录和文件:

^{pr2}$

然后在整个函数中使用filename。在

相关问题 更多 >