我试图通过Ruby中的ARGV读取文件(myfile.txt)的内容。这是我的代码:
filename = ARGV.first
puts "Here's your file #{filename}:"
print txt.read
我需要做什么才能将文件名传递给ARGV?
答案 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
尚未定义。如果您的意思是filename
,filename
是一个包含文件名的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/"