ruby写入文件中的所有行?

时间:2017-04-23 02:23:24

标签: ruby

我有我的档案

ppp.txt

mmm;2;nsfnjd;pet;
sadjjasjnsd;6;gdhjsd;pet;
gsduhdssdj;3;gsdhjhjsd;dog;

我需要写

nsfnjd
gsdhjhjsd

我使用此代码但只打印最后一行“gsdhjhjsd” 我不知道出了什么问题

 File.open("ppp.txt", "r")  do |fi|
  fi.readlines.each do |line|
    parts = line.chomp.split(';')


    if parts[1].to_i < 4

 puts parts[2]
 File.open("testxx.txt", "w+") do |f|
  f. puts parts[2]
end

    end

  end
end

请帮帮我

2 个答案:

答案 0 :(得分:1)

使用追加模式打开文件,'a +'而不是写入模式'w +',它会覆盖文件,因为在循环内调用open命令。

或者在循环读取文件的行之前打开写入文件。

答案 1 :(得分:1)

在循环外打开文件描述符

df[['H1', 'H2','H3']] = df.apply(pandas.Series)

注意:需要明确关闭fo = File.open("testxx.txt","w+") File.open("ppp.txt", "r") do |fi| fi.readlines.each do |line| parts = line.chomp.split(';') fo.puts parts[2] if parts[1].to_i < 4 end end fo.close() ,但文件以阻止方式打开; ruby自动关闭文件(fo case)。