In Vim:
:args **/*.py
:argdo 0put="#!/usr/bin/python"|put="#author: Prashant"
(edit)
This one addresses your new requirement:
:args **/*.py
:argdo execute "let @q = '#!/usr/bin/python\n#author: Alastor\n#filename: " . expand('%') . "'|0put=@q"
This one uses a different, more intuitive, approach: macros!
:args **/*.py
qq
gg
O#!/usr/bin/python<CR>#author: Alastor<CR>#filename: <C-r>%
<Esc>
q
:argdo @q
No matter what method you use, you'll need to write the files to disk afterward:
:wa