If the following doesn't work...
cd ./target_dir
set -- *
onedrive-cli put "$@"
Then it's probably because you need a put for every argument in which case this might:
{ printf 'one-drive-cli'
printf " put '%s'"///%s///" *
} | sed 's|'\''|&"&"&|g;s|///|'\''|g' |
. /dev/stdin
But if that doesn't work then your for loop probably is the best shell solution because your python script will only support one upload per invocation.
The best way to do it though is to edit the python script to meet your needs.