在Julia中打开带有格式化变量名的文件

时间:2018-04-13 22:13:14

标签: file formatting julia

我在父目录的子目录中有一个编号为gll_01.tab,gll_02.tab,....,gll_20.tab的文件列表。这些文件是表格数据文件。

我想用用户指定的输入打开/读取文件。

我能做到:

a = 3
open("directory/gll_0$a.tab")

但是使用这种方法,我必须为(01到09)和(10到18)定义两个单独的变量名。如何使用名称为02,03,...等的变量或字符串?

在python中,我可以有一个等效的命令:

a = 4
g = '{:02d}'.format(a)
f = open('directory/gll_%s.tab' %g)

Julia中是否有等效的字符串格式化命令?

2 个答案:

答案 0 :(得分:3)

在这种情况下,一个简单的答案是使用lpad

a = 3
open("directory/gll_$(lpad(a,2,"0")).tab")

如果您需要更多精美的格式,可以使用例如https://github.com/JuliaIO/Formatting.jl,在这种情况下,这将是:

using Formatting
a = 3
open("directory/gll_$(fmt("0>2", a)).tab")

答案 1 :(得分:1)

另一种选择是使用@sprintfdocs are here。有了这个,您可以使用%02d作为格式化选项,将数字d填充到长度为2且前面有0的位置:

julia> using Printf # this is in the standard library
julia> @sprintf("directory/gll_%02d.tab", 1)
"directory/gll_01.tab"

您也可以在open语句中使用它。他们在这里行动:

julia> for i in 5:10
           println("$i file is: $(@sprintf("directory/gll_%02d.tab",i))")
       end
5 file is: directory/gll_05.tab
6 file is: directory/gll_06.tab
7 file is: directory/gll_07.tab
8 file is: directory/gll_08.tab
9 file is: directory/gll_09.tab
10 file is: directory/gll_10.tab