我是Ruby的新手,我试图以这样的方式打开文件:
#! /usr/bin/env ruby
data_file = '~/path/to/file.txt'
file = File.open(data_file, 'r')
Run Code Online (Sandbox Code Playgroud)
但是我得到"没有这样的文件或目录"(该文件确实存在于该目录中).如果我将该路径作为命令行参数放在文件中,例如:
#! /usr/bin/env ruby
file = File.open(ARGV[0], 'r')
Run Code Online (Sandbox Code Playgroud)
然后从命令行运行,如:ruby script.cgi~/path/to/file.txt
任何想法如何让它以第一种方式工作?
Gaz*_*ler 13
路径没有扩展,但是当您通过命令行运行它时它会发生.我相信在unix系统中,路径在运行调用之前被扩展,这意味着:
ruby file.rb ~/path/to/file
Run Code Online (Sandbox Code Playgroud)
实际上扩展到了
ruby file.rb /home/user/path/to/file
Run Code Online (Sandbox Code Playgroud)
您可以通过在终端中运行以下命令来验证这一点(或者使用p ARGV[0]
并运行它来创建ruby文件):
echo "p ARGV[0]" | ruby "" ~/path/to/file #/home/user/path/to/file
Run Code Online (Sandbox Code Playgroud)
您可以使用File.expand_path更改~
为/home/user
data_file = '~/path/to/file.txt'
file = File.open(File.expand_path(data_file), 'r')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12440 次 |
最近记录: |