gpt4 book ai didi

ruby - 你能在 Ruby 中的一行中创建/写入/附加一个字符串到文件吗

转载 作者:数据小太阳 更新时间:2023-10-29 06:37:06 25 4
gpt4 key购买 nike

这有可能吗?

v='some text'
w='my' + Time.new.strftime("%m-%d-%Y").to_s + '.txt'
File.write(w,v) # will create file if it doesn't exist and recreates everytime

无需在实例上执行 File.open?即只是一个将追加或创建和写入的类方法?理想情况下是 ruby​​ 1.9.3 soln。

谢谢

编辑 1

这是我根据文档尝试的方法。我没有看到 rdoc,但看到了一些其他示例。我再次询问是否可以通过 File.write 以追加模式打开文件?谢谢

irb(main):014:0> File.write('some-file.txt','here is some text',"a")
TypeError: can't convert String into Integer
from (irb):14:in `write'
from (irb):14
from /usr/local/rvm/rubies/ruby-1.9.3-p392/bin/irb:13:in `<main>'
irb(main):015:0>


irb(main):015:0> File.write('some-file.txt','here is some text',O_APPEND)
NameError: uninitialized constant O_APPEND
from (irb):15
from /usr/local/rvm/rubies/ruby-1.9.3-p392/bin/irb:13:in `<main>'
irb(main):016:0>

最佳答案

Ruby 有 IO::write从 1.9.3 开始。您的编辑显示您传递了错误的参数。第一个 arg 是文件名,第二个是要写入的字符串,第三个是可选的偏移量,第四个是可以包含要传递给 open 的选项的散列。由于您想要追加,因此您需要将偏移量作为文件的当前大小传递以使用此方法:

File.write('some-file.txt', 'here is some text', File.size('some-file.txt'), mode: 'a')

从讨论线程提升:此方法存在附加的并发问题,因为偏移量的计算本质上是活泼的。此代码将首先找到大小为 X,打开文件,查找 X 并写入。如果另一个进程或线程写入 File.sizeFile::write 内的查找/写入之间的末尾,我们将不再追加并将覆盖数据.

如果使用 'a' 模式打开文件并且不查找,则保证从为 fopen(3) with O_APPEND 定义的 POSIX 语义写到末尾。 ;所以我推荐这个:

File.open('some-file.txt', 'a') { |f| f.write('here is some text') }

关于ruby - 你能在 Ruby 中的一行中创建/写入/附加一个字符串到文件吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15865140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com