当我们必须通过一个';w';作为在Ruby中打开的额外参数
我正在使用Zed Shaw的《艰苦学习Ruby》一书学习Ruby。我被困在练习16:读写文件中,因为我不明白为什么我们必须将一个'w'作为额外参数传递给Ruby中的open,并在同一个文件上称为truncate方法 这是代码示例当我们必须通过一个';w';作为在Ruby中打开的额外参数,ruby,Ruby,我正在使用Zed Shaw的《艰苦学习Ruby》一书学习Ruby。我被困在练习16:读写文件中,因为我不明白为什么我们必须将一个'w'作为额外参数传递给Ruby中的open,并在同一个文件上称为truncate方法 这是代码示例 puts "Opening the file..." target = open(filename, 'w') puts "Truncating the file. Goodbye!" target.truncate(0) 我们将非常感谢任何形式的帮助。首先,使用
puts "Opening the file..."
target = open(filename, 'w')
puts "Truncating the file. Goodbye!"
target.truncate(0)
我们将非常感谢任何形式的帮助。首先,使用'w'模式将告诉Ruby使用您指定的名称创建一个新文件,否则它将完全覆盖任何已经具有该名称的文件。这意味着它将用您提供的任何文本替换现有文件中的所有内容 虽然您也可以使用truncate()方法覆盖文件的内容,但使用truncate(),您可以根据您当前在文件中的位置声明要删除多少文件。没有参数(
truncate()
)或参数为0(truncate(0)
),truncate()的行为类似于'w',而'w'总是将整个文件擦除干净,truncate()帮助您指定要擦除的文件内容量
因此,这行代码target=open(filename,'w')
,读取名为filename
的文件,并将其写入(它会完全擦除该文件的内容)。另外,行target.truncate(0)
也会用文件名filename
擦除此文件的内容
换句话说,两种方法'w'和truncate()都执行相同的操作,即擦除文件的全部内容。但是Zed Shaw在练习中直观地使用了这两种方法,并要求对他为什么同时使用这两种方法进行研究,以便了解这两种方法是如何使用的,以及这两种方法执行相似的操作
作为额外知识的一种形式,使用'a'模式仍然会告诉Ruby使用您指定的名称创建一个新文件(如果该文件还不存在)。但与'w'模式不同,如果文件确实存在,Ruby将在文件末尾开始写入,这样就不会丢失已经存在的任何内容
就这些
我希望这有帮助