2011-02-06 5 views
1

オプションで出力ファイルを指定するのに、stdoutをデフォルトで使用する最良の方法は何ですか? stdoutがデフォルトのtrollop出力ファイル

opts = Trollop::options do 
    opt :output, "Output File", :default => $stdout 
    opt :input, "Input File", :default => $stdin 
end 
をしかし、私はそれを使用しようとすると、私が手::

今私がしようとしている

$ ./test.rb -o temp.txt 
Error: file or url for option '-o' cannot be opened: No such file or directory - temp.txt. 
Try --help for help. 

もちろん、私の前に存在する出力ファイルを要求したくありません私のスクリプトを実行しています。

娼妓のコード(特にparse_io_parameter)を見ると(また、私は大丈夫入力を指定しています方法は何ですか?)

答えて

0

私は現在、娼妓(バージョン1.16.2)は、任意のIO型引数を想定していると信じています(質問のように)入力用であると仮定されます。

回避策は次のとおりです。

は娼婦で出力ファイルを指定するには、Stringを使用します。

opts = Trollop::options do 
    opt :input, "Input File", :default => $stdin 
    opt :output, "Output File", :default => "<stdout>" 
end 

が解析された引数に基づいて、出力オブジェクト(out)を作成します。

out = if opts[:output] =~ /^<?stdout>?$/i 
    $stdout 
else 
    fd = IO.sysopen(opts[:output], "w") 
    a = IO.new(fd, "w") 
end 

を次にあなたはこのようにそれを使用することができます:

out.puts("this text gets written to output") 
関連する問題