北京大学Julia语言讲义第6章: 文件

对文本文件
readlines(filename)函数根据输入的文件名读入文件的各行为字符串数组,
每个元素是一行,
缺省行为会读入换行符但结果字符串不包含换行符,
加选项keep=true可以保留换行符。
read(filename, String)将整个文件读入为一个长字符串。

fh = open(filename)打开指定的文件用于读取,
这里fh称为一个文件句柄。
读取如readline(fh)
缺省行为会读入换行符但结果字符串不包含换行符,
加选项keep=true可以保留换行符。
close(fh)关闭fh对应的文件。

很大的文件可以每次读入一行进行处理,框架如:

open(filename) do io
    line = readline(io)
    process(line)
end

fh = open(filename, "w")打开指定的文件用于输出,
写入如println(fh, "x = ", x)
对于字符串s,
也可以用write(fh, s)写入。
结束写入后用close(fh)关闭输出文件。

6.2 文件和目录信息

参考:

  • https://docs.julialang.org/en/v1/base/file/

文件保存在目录(directory)中。
pwd()返回当前的工作目录,
不给定具体路径的文件名默认在工作目录中。
cd(path)设定path为当前工作目录。

因为不同操作系统的文件路径写法不同,
所以尽可能使用Julia的函数来对路径进行操作。
abspath(filename)求一个文件的绝对路径。
dirname(filename)求一个文件所在的目录。
joinpath()将目录与文件连接成一个完整路径。

dirname(path)获取文件路径的目录部分,
basename(path)获取文件路径除去目录的部分。

可以用dirname(@__FILE__)获取正在运行的源程序文件所在的目录。
设这个源文件同级有一个data子目录,
其中有pat.csv数据文件,
可以用

root = dirname(@__FILE__)
fd = joinpath(root, "data", "pat.csv")

获得文件的全路径,保存在变量fd中。

ispath(filename)判断每个文件或者目录是否存在。
isdir(filename)判断某个路径是否目录,
isfile(filename)判断某个路径是否文件。

readdir(path)返回指定目录的文件和子目录列表,
path时对应当前工作目录。

walkdir(path)提供了对一个目录及其中的子目录遍历的功能,
遍历时提供了当前目录、其中的子目录列表、其中的文件列表。

显示一个目录下的所有文件和子目录的样例程序如下:

for (root, dirs, files) in walkdir(".")
    println("正在显示$(root)内容---子目录:")
    for dir in dirs
        println(joinpath(root, dir)) # path to directories
    end
    println("正在显示$(root)内容---文件:")
    for file in files
        println(joinpath(root, file)) # path to files
    end
end

如果不用内置的walkdir函数,
可以递归调用如下:

function mywalk(dir)
    println("正在显示$(dir)内容:")
    ## 先显示所有文件
    for name in readdir(dir)
        path = joinpath(dir, name)
        if isfile(path)
            println(path)
        end
    end
    ## 再深入每个子目录
    for name in readdir(dir)
        path = joinpath(dir, name)
        if isdir(path)
            mywalk(path)
        end
    end
end

mywalk(".")

韭菜热线原创版权所有,发布者:风生水起,转载请注明出处:https://www.9crx.com/75095.html

(0)
打赏
风生水起的头像风生水起普通用户
上一篇 2023年8月18日 23:33
下一篇 2023年8月19日 23:43

相关推荐

  • 北京大学R语言教程(李东风)第32章: R相关与回归

    32 R相关与回归 本章所用例子数据下载: 32.1 相关分析 考虑连续型随机变量之间的关系。相关系数定义为 ρ(X,Y)=E[(X−EX)(Y−EY)]Var(X)Var(Y)‾‾‾‾‾‾‾‾‾‾‾‾‾√ 又称Pearson相关系数。 −1≤ρ≤1。ρ接近于+1表示X和Y有正向的相关; ρ接近于−1表示X和Y有负向的相关。 相…

    2023年11月22日
    11600
  • 未来75年:在职场上通才占上风还是专才占上风?未来需要什么样的金融人才?

    概括还是专门化? 1947 年 6 月 11 日,四个金融分析师协会联手创建了现在称为 CFA 协会的联合会,从这一点来看,这个问题的答案可能与今天的投资专业人士的答案不同。 2022 年,金融业主要集中在纽约和伦敦,很难成为全球范围内的行业。法兰克福、香港特别行政区、孟买、上海、新加坡、东京、多伦多——这些城市距离成为现在的全球投资中心还有很长的路要走。 …

    2023年8月1日
    21600
  • 美股:美联储加息暂停后,资产管理领域的赢家和输家

    美联储暂停加息可能会在资产管理领域产生新的赢家和输家。 过去 12 个月里,利率上升导致一些投资公司(例如专注于固定收益的公司)的股价飙升,而其他投资公司的股价则下跌。现在,长期的高利率可能会加剧这种情况。 KBW 分析师在 6 月 16 日的一份报告中写道:“虽然利率背景只是一个相对间接的因素,但对于大多数资产管理公司来说,我们确实相信该集团内部存在重要影…

    2023年6月25日
    16800
  • 因子溢价:金融市场的永恒特征

    行业中的广泛领域都基于既定因素进行投资,例如价值、动量和低风险。在这篇文章中,我们分享了在一段相当长且具有经济重要性的样本期内对样本外因素进行研究的主要结果。使用迄今为止最长的样本期(1866 年至 2020 年代),我们消除了对股票因素的数据挖掘和绩效衰退的担忧。我们发现,股票因素在样本外表现稳健,并且已成为金融市场 150 多年来一直存在的现象。 数据挖…

    2024年11月9日
    4500
  • 彭博:贝莱德提交现货比特币 ETF 申请后,数字资产流入创一年新高

    数字资产投资产品上周增加了 1.99 亿美元,这是近一年来最大的单周资金流入,美国大量现货比特币交易所交易基金申请重新引发了人们对该领域的兴趣。

    2023年6月29日
    18100

发表回复

登录后才能评论
客服
客服
关注订阅号
关注订阅号
分享本页
返回顶部