为什么在使用shebang时File.open不能在相对目录中读写?

时间:2016-02-23 11:34:46

标签: ruby

我有以下代码

#!/usr/bin/env ruby
require_relative 'parser'
Parser.new 

当我调用File.open时,它不会在其相对目录中进行读写,因为通常情况会是这样的情况?例如,如果我进入终端并调用我的Parser类,那么File.open表现正常,从其相对目录读取和写入。

这是Parser类

require_relative 'HPC'

class Parser
    def initialize
        o = File.open('O.txt','a+')
        i = File.open("here.txt",'r').readlines


        i.each do |line|
            code, pcum, div, frank = line.split
            hypo_price = HPC::hpc(pcum, div, frank)
            o.puts "#{code}: #{hypo_price}"
        end
    end
end

1 个答案:

答案 0 :(得分:1)

File.open打开当前目录中的文件。要设置相对于脚本的路径,请尝试以下操作:

here_path = File.expand_path("here.txt", File.dirname(__FILE__))
i = File.open(here_path,'r').readlines