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

File 在Julia中打开带有格式化变量名的文件,file,formatting,julia,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('dir

我在父目录的子目录中有一个编号为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中是否有等效的字符串格式化命令?

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

如果您需要更奇特的格式,您可以使用,例如,在这种情况下,这将是:

using Formatting
a = 3
open("directory/gll_$(fmt("0>2", a)).tab")
另一个选项是使用@sprintf。使用此选项,您可以使用%02d作为格式选项,将数字d填充为长度为2,前面加0:

julia> using Printf # this is in the standard library
julia> @sprintf("directory/gll_%02d.tab", 1)
"directory/gll_01.tab"
你也可以在你的公开声明中使用它。他们正在行动:

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

一般的解决方案是使用专门的软件包,例如。不过,在这种情况下,lpad就足够了:directory/gll_u$lpada,2,0.tab.Thank“lpad”正是我想要的。你可以加上这个作为答案。
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