gpt4 book ai didi

Ruby 文件完整路径

转载 作者:太空宇宙 更新时间:2023-11-03 16:25:09 25 4
gpt4 key购买 nike

我正在编写一个程序,我在其中循环浏览目标文件夹的子文件夹中的所有文件,并对其中写入的内容进行处理。所以我的本地文件夹看起来像那样

Folder
--Subfolder
---File
---File
---File
--Subfolder
---File
.
.
.

所以我有一个 each 循环来循环遍历所有子文件夹,对于每个子文件夹,我调用一个方法,该方法基本上做同样的事情,但在子文件夹中,并为每个文件调用另一个方法(解析它一个文件参数,我通过Dir.foreach(folder){ |file| 方法(file)} 命令。

所以它看起来像这样:

Dir.foreach(Dir.pwd){ |folder| call_method(folder) }

def call_method(folder) Dir.foreach(folder){|file| reading_method(file) } end

最后调用的方法 (reading_method) 应该打开称为 C 方法并将文件的完整路径解析为参数(以便 C 程序可以打开它)所以我使用 File.absolute_path(file ) 在 reading_method 中,但不是像我想要的那样返回 C:/folder/subfolder/file,而是返回 C:/folder/file 跳过子文件夹(因此 C 程序无法执行)。

有没有办法获取该文件的完整路径?

谢谢你的帮助

编辑:这是要求的完整代码

## Module

module GBK_Reader
PATH = "Z:/Folder/"
SAFETY = true
SAFETY_COUNT = 10
end


## Methods definitions


def read_file(file)
path = File.absolute_path(file)
c_string = `C:/Code/GBK_Reader/bin/Debug/GBK_Reader.exe #{path}`
return c_string.split(/ /).collect!{|spec| spec.to_i}
end

def read_folder(folder)
Dir.foreach(folder){ |file|
next if File.extname(file) != ".gbk"
temp = read_file(file)
#$bacteria_specs[0] += temp[0]
#$bacteria_specs[1] += temp[1]
}
return $bacteria_specs
end


## Main

# Look for folder
Dir.chdir(GBK_Reader::PATH)
puts "Directory found"


# Cycle through all sub-folders
$high_gc = {} #Hash to store high GC content bacterias
$count = 0
puts "Array variable set"


Dir.foreach(Dir.pwd){ |file|
next if file == "." || file == ".."
break if $count >= GBK_Reader::SAFETY_COUNT
$count += 1 if GBK_Reader::SAFETY
$bacteria_specs = [0.00, 0.00, 0.00]
$path = File.expand_path(file)
if File.directory?(file)
# Cycle through all .gbk files in sub-folder and call C program
read_folder(file)
else
# Call C program to directly evaluate GC content
c_string = read_file(file) if File.extname(file) == ".gbk"
$bacteria_specs[0] = c_string[0].to_i
$bacteria_specs[1] = c_string[1].to_i
end
# Evaluate GC content and store suitable entries
$bacteria_specs[2] = ($bacteria_specs[0]/$bacteria_specs[1])*100.00
$high_gc[file] = $bacteria_specs if $bacteria_specs[2] > 60
}

# Display suitable entries
puts "\n\n\n"
puts $high_gc
gets.chomp

最佳答案

好吧,我可能找到了一些东西,但它看起来很难看,所以如果有人有更好的解决方案,一定要继续。

我编辑了我的 read_folder 方法来解析 read_file 方法的完整路径,如下所示:

def read_folder(folder)
Dir.foreach(folder){ |file|
next if File.extname(file) != ".gbk"
path = File.absolute_path(folder)+'/'+File.basename(file)
temp = read_file(path)
$bacteria_specs[0] += temp[0]
$bacteria_specs[1] += temp[1]
}
return $bacteria_specs
end

而且我确实得到了我期望的路径。 (虽然我调用 C 程序仍然失败所以我必须检查其他地方 :D)

关于Ruby 文件完整路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26260091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com