Просто выполните:
with contextlib.closing(tempfile.NamedTemporaryFile()) as exclude_from:
print(*your_exclude_list, sep="\n", flush=True, file=exclude_from) # etc
subprocess.check_call(['rsync', '--exclude-from', exclude_from.name, ...])
... и не беспокойтесь о временном файле. Я ценю, что временные файлы кажутся беспорядочными, но с библиотекой Python и менеджерами контекста все это может быть красиво завернуто в посылку с луком, поэтому вам не нужно беспокоиться об этом.