我有我的档案
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
请帮帮我
答案 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)。