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

相关推荐

  • Cathie Wood 近一年来首次出售 Coinbase

    周二,Cathie Wood 旗下的 Ark Investment Management LLC 近一年来首次减持了 Coinbase Global Inc. 的持股。

    2023年7月12日
    15500
  • 微信上怎么 投诉 银行?(微信扫码到银行码,可以投诉吗?)

    微信扫码到银行码,可以投诉吗 微信投诉不了中国银行哦以下几种方法可以猛茄进行投诉:1、投诉者可以用书面形式向银监会进行投诉,详细叙述事情的经过以及投诉的问题;2、投诉者可以致电中国银行总行进行投诉,国家总行就会做出记录再联系客户投诉的支行进行核查;3、投诉者可以去市内的银行总行或拨打市内总行服务热线进行投诉;4、投诉者直接联系所投诉的银行,樱高与该行及时查清…

    2023年1月18日
    65000
  • 股市有弹性,但货币市场涟漪值得关注

    股市有弹性,但货币市场涟漪值得关注 作者:LPL Financial 的 Kristian Kerr,10 年 25 月 25 日 尽管中美贸易紧张局势加剧、股市波动性飙升以及与业务发展公司 (BDC) 和地区银行贷款损失相关的信贷担忧日益加剧,但股市在过去两周表现出了显着的韧性。虽然这些因素已将标准普尔 500 指数从历史高点拉回,但指数层面的技术损失相当…

    2025年11月6日
    3500
  • 打破石油的突破

    要点: 石油在过去几个月中出现了令人印象深刻的反弹。沙特阿拉伯和俄罗斯延长自愿减产有助于改善供给侧。美国石油库存也降至今年以来的低点。 石油需求正在回升。中国已将进口量增加至接近历史最高水平,而国际能源署预测上个月燃料消耗量可能再创新高。 数学很简单——供应下降和需求上升等于价格上涨。西德克萨斯中质原油(WTI)最近结束了连续九天的上涨,使油价摆脱了主要底部…

    2023年9月15日
    21300
  • 比特币暴跌,以太币遭遇 2021 年以来最大跌幅,加密货币下跌

    周一,加密货币受到全球市场避险情绪的冲击,比特币一度下跌超过 16%,排名第二的以太币则遭遇了 2021 年以来最大跌幅。 截至纽约时间上午 7:08,顶级代币比特币交易价格下跌 14% 至 51,130 美元,上周下跌 13.1%,创下自 FTX 交易所崩溃以来的最大跌幅。以太币价值下跌逾五分之一,随后收复部分跌幅,以 2,246 美元的价格易手。大多数主…

    2024年8月13日
    17400

发表回复

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