Ruby提取文件扩展名的问题

Python016

Ruby提取文件扩展名的问题,第1张

用正则表达式:

path = "C:\\test.txt"

puts path[/\.[^\.]+$/]

输出是

.txt

或者另一种办法,用scan方法,正则表达式还是一样:

puts path.scan(/\.[^\.]+$/)[0]

举例:加入该rb文件名为xx.rb,路径为xx/xx.rb,需要分析的文件为 yy/yy.txt

命令行调用rb文件(假设ruby.exe加入了环境变量):xxx>ruby xx/xx.rb yy/yy.txt

则该参数(yy/yy.rb)通过命令行传给了Ruby解释器,且解释器会将yy/yy.rb赋值给 ARGV[0](ARGV是一个数组常量),所以可以在程序中引用ARGV[0]来获取命令行中传入的路径(yy/yy.txt)

xx.rb文件可以这样开始:

txt_path = ARGV[0]

#异常处理,判断txt_path是否合法,略!!

text = IO.read(txt_path)

#以下为对文本text的分析.....

file = File.new(“testfile”, “r”)# … process the filefile.closetestfile是想要操作的文件名,”r”说明了文件的操作模式为读取。可以使用”w”表示写入,”rw”表示读写。最后要记得关闭打开的文件,确保所有被缓冲的数据被写入文件,所有相关的资源被释放。也可以使用File.open来打开文件,open和new的不同是open可以使用其后的代码块而new方法则返回一个File类的实例。File.open(“testfile”, “r”) do |file|# … process the fileendopen操作的另一个优点是处理了异常,如果处理一个文件发生错误抛出了异常的话,那么open操作会自动关闭这个文件,下面是open操作的大致实现:class Filedef File.open(*args)result = f = File.new(*args)if block_given?beginresult = yield fensuref.closeendendreturn resultendend对于文件的路径,Ruby会在不同的操作系统间作转换。例如,在Windows下,/ruby/sample/test.rb会被转化为\ruby\sample\test.rb。当你使用字符串表示一个Windows下的文件时,请记住使用反斜线先转义: