【问题标题】:Opening file from directory in ruby using File.open使用 File.open 从 ruby​​ 目录中打开文件
【发布时间】:2012-05-01 20:49:53
【问题描述】:

我对 Ruby 比较陌生,我正在尝试以如下方式打开文件:

#! /usr/bin/env ruby
data_file = '~/path/to/file.txt'
file = File.open(data_file, 'r')

但是我得到“没有这样的文件或目录”(该文件确实存在于该目录中)。如果我将该文件的路径作为命令行参数,它可以工作,例如:

#! /usr/bin/env ruby
file = File.open(ARGV[0], 'r')

然后从命令行运行,例如:ruby script.cgi ~/path/to/file.txt

任何想法如何让它以第一种方式工作?

【问题讨论】:

    标签: ruby file-io directory cgi


    【解决方案1】:

    路径没有被扩展,但是当你通过命令行运行它时它会扩展。我相信在 unix 系统中,路径是在运行调用之前扩展的,意思是:

    ruby file.rb ~/path/to/file
    

    实际上扩展为

    ruby file.rb /home/user/path/to/file
    

    您可以通过在终端中运行以下命令来验证这一点(或使用 p ARGV[0] 创建一个 ruby​​ 文件并运行它):

    echo "p ARGV[0]" | ruby "" ~/path/to/file #/home/user/path/to/file
    

    您可以使用File.expand_path~ 更改为/home/user

    data_file = '~/path/to/file.txt'
    file = File.open(File.expand_path(data_file), 'r')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 2014-10-05
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多