我是Julia的新人!请问,如果事情是琐碎的或愚蠢的! 我正在尝试在readlines.jl中使用以下代码读取文件:
#! /opt/julia/julia-1.1.0/bin/Julia
function readlines(file_path::String)
io = IOBuffer()
global file
try
file = open(file_path)
l0 = readline(file)
for line in eachline(file)
println(io, line)
end
catch err
println("Error: $err")
finally
close(file)
end
end
readlines("/opt/julia/julia-1.1.0/LICENSE.md")
正在执行,$ / home / julia / readlines.jl不会打印文件的内容。
请帮助我在文件读取中使用IOBuffer!
答案 0 :(得分:1)
代码中的问题是您没有从函数返回io
。这是一些代码清除的修复程序(特别注意,readlines
函数是在Base中定义的,因此最好使用另一个函数名):
function readlines2(file_path::String)
io = IOBuffer()
open(file_path) do file
l0 = readline(file)
for line in eachline(file)
println(io, line)
end
end
io
end
现在,您可以运行它来获取IOBuffer
作为返回值。请注意,通常您会希望将此IOBuffer
的内容转换为字符串,可以使用take!
和String
这样的函数来实现:
io = readlines2("your_file.ext")
str = String(take!(io))
现在str
包含读入的数据作为字符串。
最后,您可能更喜欢使用内置的readlines
函数,只删除返回向量的第一项,然后join
保留其余值,如下所示:
join(readlines("your_file.ext", keep=true)[2:end])
以获得相同的结果(这可能会慢一些,但是更简单)。