Here's an implementation along the same idea, where the trailing comma is not a problem because \clist_map_inline:nn
ignores empty items:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\multinput}{sm}
{
\IfBooleanTF{#1}
{
\rpapa_multinput_list:n { #2 }
}
{
\rpapa_multinput_file:n { #2 }
}
}
\tl_new:Nn \l_rpapa_multinput_files_tl
\cs_new_protected:Nn \rpapa_multinput_file:n
{
\tl_set_from_file:Nnn \l_rpapa_multinput_files_tl { \endlinechar=`, } { #1 }
\rpapa_multinput_list:V \l_rpapa_multinput_files_tl
}
\cs_new_protected:Nn \rpapa_multinput_list:n
{
\clist_map_inline:nn { #1 } { \input{##1}\par }
}
\cs_generate_variant:Nn \rpapa_multinput_list:n { V }
\ExplSyntaxOff
\begin{document}
\multinput{assocFile.dat}
\bigskip
\multinput*{fichier1,files2,test3}
\end{document}
The input files just contain `I am ". Note that the *-variant takes as argument a comma separated list of file names.

A second implementation, where the “filename” case is dealt with doing a mapping on the file itself:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\multinput}{sm}
{
\IfBooleanTF{#1}
{
\rpapa_multinput_list:n { #2 }
}
{
\rpapa_multinput_file:n { #2 }
}
}
\cs_new_protected:Nn \rpapa_multinput_list:n
{
\clist_map_inline:nn { #1 } { \input{##1}\par }
}
\ior_new:N \g_rpapa_multinput_file_stream
\cs_new_protected:Nn \rpapa_multinput_file:n
{
\ior_open:Nn \g_rpapa_multinput_file_stream { #1 }
\ior_map_inline:Nn \g_rpapa_multinput_file_stream
{
\input{##1}\par
}
}
\ExplSyntaxOff
\begin{document}
\multinput{assocFile.dat}
\bigskip
\multinput*{fichier1,files2,test3}
\end{document}