2010-07-10 63 views
0
filename = "#{k}""/kabab" 
extension = ".txt" 

for i in 1..10 
    $stdout=File.open("#{filename}#{co}#{extension}" ,'w') 
    puts "sachin" 
end 

puts "amit" 

什么我的问题是在最后的文件指kabab10.txt我geeting样萨钦和艾米特 输出,但我不希望被进来10日文件阿米特如何解决it`

+2

不改变全局变量。 – 2010-07-10 05:50:47

回答

0

尝试使用puts将sachin添加到文件中。

$f = File.open("#{filename}#{co}#{extension}" ,'w') 
$f.puts "sachin" 
+0

我试了阿米特仍然附加在那里 – Milan 2010-07-10 08:17:40

+0

@amit tomar:如果你永远不会重新分配标准输出,而你打电话“放阿米特”,“阿米特”将被打印到控制台。不是文件。用“ruby foo.rb”运行程序。没有管道或任何东西。 – Borealid 2010-07-10 09:08:38

+1

为什么要使用全局变量? – 2010-07-10 10:18:13

0

我编辑您的问题,但我不认为你是如何为你使用它,我希望下面的loop.But的所有文件获得阿米特帮助你,如果你把puts "amit"for loop

puts "amit" if i != 10 

编辑: - 你喜欢像下面

filename = "kabab" 
extension = ".txt" 

puts "amit" 

for i in 1..10 
    $stdout=File.open("#{filename}#{i}#{extension}" ,'w') 
    puts "sachin" 

end 
+0

没有salil即时通讯在最后一个文件意味着在第10个文件o不想这 – Milan 2010-07-10 08:06:37

1

不要改变$stdout,当然不是没有保存了旧价值的地方所以你可以在完成后恢复它。

相反,调用puts文件对象上:

File.open("#{filename}#{co}#{extension}" ,'w') do |file| 
    10.times do 
    file.puts "sachin" # This goes to the file 
    end 
end 

puts "amit" # This goes to standard output 
+0

谢谢拉尔斯...但拉尔 File.open(“#{filename}#{co}#{extension}”,'w')do |文件| 10.times做 运行 结束 结束 运行在身体的其他一些文件 DEF运行 看跌期权“萨钦” 现在该怎么做,当我打电话运行作为file.run然后我有一个像错误私人的方法运行调用这样的文件 把“amit – Milan 2010-07-12 07:16:54

+0

@amit:发送'文件'作为你的'运行'方法的参数,并在运行方法做'file.puts”amit“' – 2010-07-12 07:31:42

+0

yaa我做了同样的我想知道这个错误的原因 – Milan 2010-07-12 07:34:05