在子文件夹中读取csv文件

时间:2018-12-11 18:10:03

标签: julia

我以csv格式存储数据,并将其放在“ Datasets”文件夹中。我想仅使用它们的名称来读取数据:CSV.read("name_of_data.csv"),而不必告诉Julia完整的路径,例如:CSV.read("Datasets/name_of_data.csv")

我尝试使用push!(LOAD_PATH,"Datasets"),但没有用。

谢谢。

1 个答案:

答案 0 :(得分:2)

您应该将Julia的当前工作目录更改为Datasets。您可以通过在尝试读取文件之前写入cd("Datasets")来完成此操作(假设pwd()返回了Datasets目录的父目录)。

您还可以编写以下内容:

cd("Datasets") do
    CSV.read("name_of_data.csv")
end

仅将目录临时更改为Datasets即可读取文件。

LOAD_PATH被Julia用来决定加载代码(不是数据)时将哪些路径视为项目环境或程序包目录。

编辑

这是一个可能的示例方法:

function expandpath(directories, filenames)
    fnset = Set(filenames)
    namemapping = Dict{String, String}()
    for d in directories
        for fn in readdir(d)
            if fn in fnset
                fullpath = joinpath(d, fn)
                if isfile(fullpath)
                    namemapping[fn] = fullpath
                end
            end
        end
    end
    collect(values(namemapping))
end

directories是要搜索的目录列表,而filenames是文件名列表。这样一来,您将获得在列出的目录中找到的文件名的扩展路径的列表(如果有重复,则保留最后一个)。