0

target.writeを使用して5行を1行に減らそうとすると、上記のエラーが発生しました。

target.write("%s \n %s \n %s \n") % [line1, line2, line3]
# target.write("\n")
# target.write(line2)
# target.write("\n")
# target.write(line3)
# target.write("\n")

コメントされたセクションが実行されました(1行目が実行されたときtarget.write(line1)ですが、これは実行されません。

なぜ最初の行はコメントアウトされた6行を書くのと同じではないのですか?スクリプト全体は次のとおりです。

filename = ARGV.first
script = $0

puts "We're going to erase #{filename}."
puts "If you don't want that hit control C"
puts "If you do want that hit execute or return"

print "? "
STDIN.gets

puts "Opening the file..."
target = File.open(filename, 'w')

puts "Truncating the file. Goodbye!"
target.truncate(target.size)

puts "Now I'm going to ask you for three lines."

print "line1: "; line1 = STDIN.gets.chomp()
print "line2: "; line2 = STDIN.gets.chomp()
print "line3: "; line3 = STDIN.gets.chomp()

puts "I'm going to write these to the file."

target.write("%s \n %s \n %s \n") % [line1, line2, line3]
# target.write("\n")
# target.write(line2)
# target.write("\n")
# target.write(line3)
# target.write("\n")

puts "And finally we close it"
target.close()  
4

2 に答える 2

0

ラインのクロージングパレンtarget.writeが間違った場所にあります。試す

target.write("%s \n %s \n %s \n" % [line1, line2, line3])
于 2012-04-28T21:58:48.890 に答える
0

かっこが間違っています。あなたが持っているもの:

target.write("%s \n %s \n %s \n") % [line1, line2, line3]

次のことを行うのと同じです。

a = target.write("%s \n %s \n %s \n")
a % [line1, line2, line3]

したがって、必要なのは次のとおりです。

target.write("%s \n %s \n %s \n" % [line1, line2, line3])
于 2012-04-28T21:59:01.613 に答える