当输出文件中的行时,Ruby控制台会覆盖行

| 我已经开始学习Ruby,并且遇到了一个烦人的问题。我已将文本文件导入程序,我想遍历其中的行并将其打印到屏幕上。 当我这样做时,控制台将覆盖最后打印出的行,并将新的写在最上面。为什么会发生这种情况,我该如何解决? 这是我的代码:
passwords = File.open(\'C:\\Users\\Ryan\\Desktop\\pw.txt\', \'r\')
lines = passwords.gets

for line in lines
    puts line
end
更新: 该循环的行为非常奇怪。我在其中添加了一条sleep语句,它所做的只是睡眠一次,然后继续输出行。我本来希望它在输出每一行之前都处于休眠状态。下面的例子:
passwords.each do |line|
    sleep 1
    puts line.chomp
end
更新2: 我刚刚创建了一个新的文本文件,并在其中输入了一些随机的东西进行测试,效果很好。看起来原始文件中包含一些错误的字符/编码,使打印到控制台的工作变得混乱。     
已邀请:
您是否遇到EOL(又名“行尾”)问题?尝试这个:
passwords = File.open(\'C:\\Users\\Ryan\\Desktop\\pw.txt\', \'r\')
lines = passwords.gets
lines.each { |line| puts line.chomp }
passwords.close
chomp
呼叫将剥离任何
\\n
\\r
\\r\\n
行尾,然后
puts
将附加本机EOL。     
File.open(\'C:\\Users\\Ryan\\Desktop\\pw.txt\') do |line|
  while not line.eof?
    puts line.readline.chomp
  end
end
要么
File.read(\"file\").each { |line| puts line.chomp }
    
最后,我发现该文本文件是导致我出现问题的原因。我创建了一个内容相同的新书,它开始按我的预期工作。     

要回复问题请先登录注册