有的时候需要给ruby程序以及ruby待操作的文件以完整的路径,举例说明吧:
在g:\ding\anpc\163_anpc.rb程序中有如下代码:
3.times {
load ‘..\anpc\data_163.rb’
load ‘..\bin\bin_163.rb’
}
如果在g:\ding\anpc\ 下执行163_anpc.rb, 程序可以正常运行,但如果在别的路径,比如c:\,执行g:\ding\anpc\163_anpc.rb,程序就会报错,说找不到data_163.rb和bin_163.rb。
解决问题的方法是给ruby程序以完整的路径,如下所示:
3.times {
load File.join(File.dirname(__FILE__), ‘data_163.rb’)
load File.join(File.dirname(__FILE__), ‘../bin/bin_163.rb’)
}
类似的例子:
在g:\ding\anpc\data_163.rb程序中有如下代码:
#初始化user
users = []
File.open(’user_163_anpc.txt’) do |f|
f.each_line do |line|
words = line.split(’ ‘)
users << {:user => words[0], :password => words[1]}
end
end
该程序在g:\ding\anpc\ 下执行data_163.rb, 文件操作正常,但如果在别的路径,比如c:\,执行g:\ding\anpc\data_163.rb,程序就会报错,说找不到文件user_163_anpc.txt。
解决问题的方法是给待操作的文件以完整的路径,如下所示:
#初始化user
users = []
users_filename = File.join(File.dirname(__FILE__), ‘user_sina_anpc.txt’)
File.open(users_filename) do |f|
f.each_line do |line|
words = line.split(’ ‘)
users << {:user => words[0], :password => words[1]}
end
end
我自己的原创:http://www.sdgz.cn
在g:\ding\anpc\163_anpc.rb程序中有如下代码:
3.times {
load ‘..\anpc\data_163.rb’
load ‘..\bin\bin_163.rb’
}
如果在g:\ding\anpc\ 下执行163_anpc.rb, 程序可以正常运行,但如果在别的路径,比如c:\,执行g:\ding\anpc\163_anpc.rb,程序就会报错,说找不到data_163.rb和bin_163.rb。
解决问题的方法是给ruby程序以完整的路径,如下所示:
3.times {
load File.join(File.dirname(__FILE__), ‘data_163.rb’)
load File.join(File.dirname(__FILE__), ‘../bin/bin_163.rb’)
}
类似的例子:
在g:\ding\anpc\data_163.rb程序中有如下代码:
#初始化user
users = []
File.open(’user_163_anpc.txt’) do |f|
f.each_line do |line|
words = line.split(’ ‘)
users << {:user => words[0], :password => words[1]}
end
end
该程序在g:\ding\anpc\ 下执行data_163.rb, 文件操作正常,但如果在别的路径,比如c:\,执行g:\ding\anpc\data_163.rb,程序就会报错,说找不到文件user_163_anpc.txt。
解决问题的方法是给待操作的文件以完整的路径,如下所示:
#初始化user
users = []
users_filename = File.join(File.dirname(__FILE__), ‘user_sina_anpc.txt’)
File.open(users_filename) do |f|
f.each_line do |line|
words = line.split(’ ‘)
users << {:user => words[0], :password => words[1]}
end
end
我自己的原创:http://www.sdgz.cn