如何从用户使用ARGV获取输入来读取文件?

时间:2017-01-29 15:45:43

标签: ruby

我试图通过Ruby中的ARGV读取文件(myfile.txt)的内容。这是我的代码:

filename = ARGV.first

puts "Here's your file #{filename}:"

print txt.read

我需要做什么才能将文件名传递给ARGV?

3 个答案:

答案 0 :(得分:1)

解决方案

使用名为read_file.rb的ruby脚本:

# read_file.rb
# example :
# ruby read_file.rb some_file.txt
filename = ARGV.first

puts "Here's your file #{filename}:"

print File.read(filename)

您可以致电:

ruby read_file.rb myfile.txt

您的代码

print txt.read

txt尚未定义。如果您的意思是filenamefilename是一个包含文件名的String。它不是File对象,因此您无法直接致电filename.read

答案 1 :(得分:1)

最好用

N3:N7

注意拼写为ARGF.read

...F是参数中命名的所有文件的流,如果没有命名文件则是标准输入。这是脚本的最佳实践,允许您的程序与unix管道一起使用。

ARGF

如果您使用cat filename | ruby script.rb ruby script.rb filename ,那么两者都会有效吗?

答案 2 :(得分:0)

请尝试以下操作。

file = ARGV.first

file_name_with_extn = File.basename file        # => "abc.mp4"

file_extn = File.extname  file                  # => ".mp4"

file_name = File.basename file, extn            # => "abc"

file_path = File.dirname  file                  # => "/path/"