北京大学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

相关推荐

  • 大学费用飙升的背后是什么以及您可以做什么

    自从我在 2011 年首次撰写有关大学教育成本不断增加的文章以来,有什么变化吗?最简洁的答案是不。” 过去40年大学学费的累计涨幅远高于通货膨胀率。1980 年至 2020 年间,通货膨胀上升了 95%,而平均大学教育成本上升了 148%。1980 年四年制学位的费用为 50,000 美元,现在则为 124,000 美元。 显然,大学费用的上涨速度远远快于其…

    2023年9月8日
    13300
  • 通货膨胀的两项指标与美联储政策

    BEA 9 月份核心个人消费支出 (PCE) 价格指数显示,核心通胀率继续高于美联储 2% 的长期目标(3.7%)。9 月份核心消费者价格指数 (CPI) 公布较高,为 4.1%。美联储有记录使用核心个人消费支出数据作为主要通胀指标。要详细了解每个版本,请查看我们最新的消费者价格指数和PCE 价格指数版本。 首选通胀指标 美联储有记录使用核心个人消费支出数据…

    2023年11月4日
    15300
  • 如何建立更好的低波动性股票策略

    低波动性策略在投资组合中的作用 低波动性股票策略吸引投资者的原因有很多。首先,它们有助于在市场动荡期间保持我们的投资组合投资于股票。其次,如果构建良好,它们通常会比波动性较高的同类产品表现出更高的风险调整回报。 虽然对低波动性策略的一般调查表明,它们确实可以保护投资者免受市场驱动的风险,但经常被忽视的是,这些策略可能不够多元化或风险控制不足。为此,我们将研究…

    2024年1月26日
    5600
  • 2023年高收入美国家庭的去向

    尽管生活成本面临挑战,高收入美国家庭的数量仍在持续增长。2021 年,有 868 万份纳税申报表显示年收入超过 20 万美元,高于一年前的 857 万份纳税申报表。这些高收入家庭的迁移可能会对一个州的税基和财政产生重大影响。 着手确定高收入者移居最多的州。为此,我们研究了 2020 年至 2021 年间每个州收入至少 20 万美元的纳税人的流入和流出情况。 …

    2023年8月23日
    19100
  • 中国进出口数据下降是全球经济的先兆?

    中国出口同比下降14.5%,进口下降12.4%。 “这些数字证实,经济日益增长的增长缺口反映了国内外的挑战。” 出口第三个月下降 由于全球需求下滑,中国7月份出口连续第三个月下降,而国内压力也削弱了经济复苏,进口大幅下降。 海关总署周二表示,以美元计算,上个月海外发货量同比下降 14.5%,这是自 2020 年 2 月以来最严重的降幅,而进口量则萎缩 12.…

    2023年8月11日
    23000

发表回复

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