我已经开始学习Ruby了,我遇到了一个恼人的问题。我已将一个文本文件导入到我的程序中,我想迭代它中的行并将它们打印到屏幕上。
当我这样做时,控制台会覆盖最后打印出的行并将新的行写在最上面。为什么会发生这种情况,我该如何解决?
这是我的代码:
passwords = File.open('C:\Users\Ryan\Desktop\pw.txt', 'r')
lines = passwords.gets
for line in lines
puts line
end
更新: 这个循环很奇怪。我把一个睡眠声明放进去,它所做的只是睡了一次,然后继续输出线条。我希望它在输出每一行之前就能睡觉。示例如下:
passwords.each do |line|
sleep 1
puts line.chomp
end
更新2: 我刚刚创建了一个新的文本文件并输入了一些随机的东西进行测试,它工作正常。看起来原始文件有一些不好的字符/编码,这会打印到控制台。
答案 0 :(得分:1)
你有EOL(AKA行尾)问题吗?试试这个:
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。
答案 1 :(得分:0)
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 }
答案 2 :(得分:0)
最后我发现文本文件是导致我出问题的原因。我创建了一个具有相同内容的新内容,它开始按照我的意图工作。