Если я правильно понимаю ваш вопрос, вы можете использовать shlex.split
.(Как указывает JAB, rsync_options.split()
также является опцией в данном конкретном случае, но в некоторых угловых случаях она не срабатывает, , как показано в примечании здесь .)
>>> import shlex
>>> shlex.split('-axh --delete --delete-excluded')
['-axh', '--delete', '--delete-excluded']
ТогдаВы можете insert
, append
или extend
получить результат любым удобным для вас способом.
Возможно, самый простой способ построения окончательного списка - это объединение:
>>> rsync_options = '-axh --delete --delete-excluded'
>>> rsync_args = ['rsync'] + shlex.split(rsync_options) + ['/tmp/1', '/tmp/2']
>>> rsync_args
['rsync', '-axh', '--delete', '--delete-excluded', '/tmp/1', '/tmp/2']
Но это делает копию.Это, вероятно, не имеет значения в этом случае, но просто для полноты, вот способ сделать это без копирования:
>>> rsync_args = shlex.split(rsync_options)
>>> rsync_args.extend(['/tmp/1', '/tmp/2'])
>>> rsync_args.insert(0, 'rsync')
>>> rsync_args
['rsync', '-axh', '--delete', '--delete-excluded', '/tmp/1', '/tmp/2']