Ruby 如何从另一种方法中获取结果
我有一个带有子目录的目录结构:Ruby 如何从另一种方法中获取结果,ruby,Ruby,我有一个带有子目录的目录结构: ../../../../../MY_PROJECT/TEST_A/cats/ ../../../../../MY_PROJECT/TEST_B/dogs/ ../../../../../MY_PROJECT/TEST_A/tigers/ ../../../../../MY_PROJECT/TEST_A/elephants/ 每个文件都有一个以“.sln””结尾的文件: 这些文件包含特定于其目录的信息。我想做以下工作: 在每个子目录中创建一个文件“myfile.t
../../../../../MY_PROJECT/TEST_A/cats/
../../../../../MY_PROJECT/TEST_B/dogs/
../../../../../MY_PROJECT/TEST_A/tigers/
../../../../../MY_PROJECT/TEST_A/elephants/
每个文件都有一个以“.sln””结尾的文件:
这些文件包含特定于其目录的信息。我想做以下工作:
“myfile.txt”
,并向其写入一些字符串:
../../../../../MY_PROJECT/TEST_A/cats/myfile.txt
../../../../../MY_PROJECT/TEST_B/dogs/myfile.txt
../../../../../MY_PROJECT/TEST_A/tigers/myfile.txt
../../../../../MY_PROJECT/TEST_A/elephants/myfile.txt
“.sln”
文件中的特定字符串复制到特定目录的myfile.txt
:
def parse_sln_files
sln_files = Dir["../../../../../MY_PROJECT/TEST_*/**/*.sln"]
sln_files.each do |file_name|
File.open(file_name) do |f|
f.each_line { |line|
if line =~ /C Source files ="..\\/ #"
path = line.scan(/".*.c"/)
puts path
end
}
end
end
end
def create_myfile
Dir['../../../../../MY_PROJECT/TEST_*/*/'].each do |dir|
File.new File.join(dir, 'myfile.txt'), 'w+'
Dir['../../../../../TEST/TEST_*/*/myfile.txt'].each do |path|
File.open(path,'w+') do |f|
f.puts "some text...."
f.puts "some text..."
f.puts # here I would like to return the result of parse_sln_files
end
end
end
end
def parse_sln_and_store_source_files
sln_files = Dir["../../../../../MY_PROJECT/TEST_*/**/*.sln"]
sln_files.each do |file_name|
#### Lets collect source file names in this array
source_file_names = []
File.open(file_name) do |f|
f.each_line { |line|
if line =~ /C Source files ="..\\/ #"
path = line.scan(/".*.c"/)
############ Add path to array ############
source_file_names << path
end
}
end
#### lets create `myfile.txt` in same dir as that of .sln
test_file = File.expand_path(File.dirname(file_name)) + "/myfile.txt"
File.open(test_file,'w+') do |f|
f.puts "some text...."
f.puts "some text..."
##### Iterate over source file names & write to file
source_file_names.each { |n| f.puts n }
end
end
end
关于如何表达这一点,< p>似乎你想从VisualC++解决方案文件中读取C文件名列表,并将其存储在同一目录中的一个单独文件中。您可能需要合并代码中显示的两个循环,并执行以下操作:
def create_myfile
Dir['../../../../../MY_PROJECT/TEST_*/*/'].each do |dir|
File.new File.join(dir, 'myfile.txt'), 'w+'
Dir['../../../../../TEST/TEST_*/*/myfile.txt'].each do |path|
File.open(path,'w+') do |f|
f.puts "some text...."
f.puts "some text..."
f.puts # here I would like to return the result of parse_sln_files
end
end
end
end
def parse_sln_and_store_source_files
sln_files = Dir["../../../../../MY_PROJECT/TEST_*/**/*.sln"]
sln_files.each do |file_name|
#### Lets collect source file names in this array
source_file_names = []
File.open(file_name) do |f|
f.each_line { |line|
if line =~ /C Source files ="..\\/ #"
path = line.scan(/".*.c"/)
############ Add path to array ############
source_file_names << path
end
}
end
#### lets create `myfile.txt` in same dir as that of .sln
test_file = File.expand_path(File.dirname(file_name)) + "/myfile.txt"
File.open(test_file,'w+') do |f|
f.puts "some text...."
f.puts "some text..."
##### Iterate over source file names & write to file
source_file_names.each { |n| f.puts n }
end
end
end
def解析和存储源文件
sln_files=Dir[”../../../../../../../MY_PROJECT/TEST.*/***.sln“]
sln_files.each do| file_name|
####让我们在此数组中收集源文件名
源文件名=[]
File.open(文件名)do | f|
f、 每条{线|
如果line=~/C Source files=“..\\/#”
路径=行扫描(/“*.c”/)
############将路径添加到数组############
源文件名太棒了!这正是我想要的!