我们如何使用Julia逐个字符地读取.txt文件?

9

我正在尝试使用Julia处理一个.txt文件,并且需要能够查看程序读取文件时的每个字符。但是在Julia文档页面上,我所找到的关于此问题的信息都只介绍了如何按行读取。我知道基本设置应该像这样:

file = open("testfile.txt","r");
while !eof(file)
    //look at each character and store it to a variable 

一旦存储到变量中,我知道如何操作它,但我无法弄清楚如何将其存储到变量存储中。

1个回答

13

使用read函数的方法如下:

file = open("testfile.txt","r")
while !eof(file)
    c = read(file, Char)
    # your stuff
end
close(file)

这将使用UTF-8逐个字符地读取它。

如果您想按字节读取,请使用:

file = open("testfile.txt","r")
while !eof(file)
    i = read(file, UInt8)
    # your stuff
end
close(file)
请注意,您可以使用do块在离开文件时自动关闭它:
open("testfile.txt","r") do file
    while !eof(file)
        i = read(file, UInt8)
        # your stuff
    end
end

如果您想查看更完整的示例,可以查看此函数https://github.com/bkamins/Nanocsv.jl/blob/master/src/csvreader.jl#L1,该函数使用模式read(io, Char)解析CSV文件。


谢谢帮助。这正是我所需要的。我在帮助文档中看到了这个,但没有意识到 char 必须写成 Char 才能正确传递。 - Noah Franck
@NoahFranck 上面的回答看起来很棒。为什么不接受它,这样写它的人就能得到接受所带来的荣誉了呢? - Julia Learner
@JuliaLearner,说实话,在你提到之前,我并不知道有选择答案或标记最有益的选项。 - Noah Franck
@NoahFranck 感谢您的关注。我也注意到了另一个问题,您可以考虑在这里检查:https://stackoverflow.com/questions/52339092/julia-passing-arguments-reading-the-command-line/52437448#52437448。 - Julia Learner
1
请参考以下问题和答案,了解如何按行读取文件:https://dev59.com/qVMH5IYBdhLWcg3w0DO9#58169712 - StefanKarpinski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接