Использование подстановочного знака '{a..b}' в fstring - PullRequest
0 голосов
/ 21 января 2020

Я хочу использовать xarray.openmfdataset, чтобы открыть указанный c набор файлов. Например, я хотел бы открыть файл.20180101.n c, файл.20180102.n c, файл20180103.n c со следующим кодом:

xr.open_mfdataset('./file.{20180101..20180103}.nc', combine='by_coords')

Начало и конечные целые числа хранятся в переменных ts и te, поэтому в идеале я хотел бы использовать такую ​​строку:

xr.open_mfdataset('./file.\{{ts}..{te}\}.nc', combine='by_coords')

Где '{}', не содержащие переменную, сбежал. Тем не менее, я получаю следующую ошибку: SyntaxError: f-string: single '}' is not allowed

Быстрый поиск не дал решения, есть ли хороший способ выполнить sh это?

Ответы [ 2 ]

2 голосов
/ 21 января 2020

bash расширение скобки в стиле не глобус и не поддерживается open_mfdataset. Вы можете передать список имен файлов, однако.

xr.open_mfdataset(
    [f'./file.{x}.nc' for x in range(ts, te)],
    combine='by_coords'
)
1 голос
/ 21 января 2020

Скобки в f-строках экранированы с большим количеством скобок. {{ - это экранированная открывающая скобка, а }} - экранированная закрывающая скобка.

Соответственно, это должно работать:

xr.open_mfdataset(f'./file.{{{ts}..{te}}}.nc', combine='by_coords')
...