I want to use Asymptote for making some pictures in Latex. These pictures are to be generated using input files which are in csv format. The files have variable columns and typically look like this (shortened for clarity)

"A", 1, 2, 3
"B", 5, 2, 1, 6, 6
"C", 3, 8

Is it possible to read the file line-by-line, assimilating the data in each row into data-structures inside Asymptote code?

  • Yes, it seems to be possible, see e.g. tex.stackexchange.com/a/226235, where you can find the line file in1=input(filename1).line().csv(); which seems to be doing what you are asking. Of course, if you have a specific task that is to be done with the data one may more easily write an explicit answer.
    – user194703
    Oct 11, 2019 at 2:35

1 Answer 1


You can read your data file sample.dat into a two-dimensional array of strings s with the following code.

file f = input("sample.dat").line().csv(); 
string[][] s;
while(!eof(f)) { s.push(f.line()); }


The write commands output the following text, demonstrating that the file reading was successful.

0:  A
1:   1
2:   2
3:   3

A    1   2   3
B    5   2   1   6   6
C    3   8

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .