这个对我有用
-module(test).
-export([start/0, scan_string/1]).
start() ->
{ok, File} = file:open("Newfile.txt",[read]),
{ok, List} = file:read(File,1024 * 1024),
KeyVal = scan_string(List),
F = fun({K,V}, Acc) -> maps:put(K, V, Acc) end,
lists:foldl(F, #{}, KeyVal).
scan_string(TermString) ->
{_, Strings} = lists:foldl(fun break_terms/2, {"", []}, TermString),
Tokens = [T || {ok, T, _} <- lists:map(fun erl_scan:string/1, Strings)],
AbsForms = [A || {ok, A} <- lists:map(fun erl_parse:parse_exprs/1, Tokens)],
[V || {value, V, _} <- lists:map(fun eval_terms/1, AbsForms)].
break_terms($., {String, Lines}) ->
Line = lists:reverse([$. | String]),
{"", [Line | Lines]};
break_terms(Char, {String, Lines}) ->
{[Char | String], Lines}.
eval_terms(Abstract) ->
erl_eval:exprs(Abstract, erl_eval:new_bindings()).
newfile.txt文件=
{fruit, [apple,banana,kiwi]}.
{car, [estate,hatchback]}.
{tree, [ebony,pine,ask,birch]}.
{planet, [earth]}.
壳牌=
Eshell V9.3.1 (abort with ^G)
1> c(test).
{ok,test}
2> test:start().
#{car => [estate,hatchback],
fruit => [apple,banana,kiwi],
tree => [ebony,pine,ask,birch]}
3>