如何用write函数向文件追加数据?为何测试代码未达预期?
问题原因解析
你遇到的问题核心在于文件连接的打开模式与write()函数append参数的生效条件不匹配:
- 当你提前用
file()创建文件连接f但未指定打开模式时,第一次调用write()会自动以**覆盖写入模式("w")**打开该连接——这会清空目标文件,写入1:5,且连接保持打开状态。 - 第二次调用
write()时,虽然指定了append = T,但这个参数仅在文件连接未被提前打开的场景下生效。一旦连接处于打开状态,append参数无法修改已有的连接模式,此时仍然是覆盖写入模式,所以6:10会直接替换掉之前的内容。
验证与修正方案
如果要实现追加效果,有两种可行写法:
写法1:直接传入文件名,让write()自动管理连接
write(1:5, ncolumns = 5, "append2me.txt") write(6:10, ncolumns = 5, "append2me.txt", append = TRUE) print(readLines("append2me.txt"))
写法2:手动指定连接的打开模式
# 第一次以覆盖模式写入 f <- file("append2me.txt", open = "w") write(1:5, ncolumns = 5, f) close(f) # 第二次以追加模式打开连接 f <- file("append2me.txt", open = "a") write(6:10, ncolumns = 5, f) close(f) print(readLines("append2me.txt"))
以上两种写法都能得到预期的[1] "1 2 3 4 5" "6 7 8 9 10"输出。
内容的提问来源于stack exchange,提问作者pietrodito
相关产品推荐
相关产品推荐

