Может ли Meson считывать содержимое файла в массив или строку? С здесь строку можно разбить на массив, и массив можно перебрать с помощью foreach
, но я не смог найти способ получить данные из файла для начала.
Может ли Meson читать содержимое файла
Ответы (3)
Не прямо нет, вы можете использовать run_command()
, чтобы получить его из другого инструмента / скрипта.
person
TingPing
schedule
11.11.2017
Чтобы завершить ответ @TingPing, я обычно делаю это:
files = run_command(
'cat', files('thefile.txt'),
).stdout().strip()
Этот метод также можно использовать для чего-то вроде:
images = run_command('find',
meson.current_source_dir(),
'-type', 'f',
'-name', '*.png',
'-printf', '%f\n'
).stdout().strip().split('\n')
Не забывайте, что ссылки на файлы в Meson могут быть неточными, поэтому вам нужно использовать один из них:
files('thefilename')
join_paths(meson.source_root(), meson.current_source_dir(), 'thefilename')
РЕДАКТИРОВАТЬ: для более кросс-совместимого решения вы можете использовать python вместо cat
:
files = run_command('python', '-c',
'[print(line, end="") for line in open("{0}")]'.format(myfile)
).stdout().strip()
person
Salamandar
schedule
28.11.2017
Это работает кросс-платформенный? (Поскольку мезон написан на python, я полагаю, вы могли бы использовать модуль python для вызова сценария python вместо этого…)
- person Caesar; 05.05.2020
@Caesar Нет, это не так. Например,
cat
не обязательно доступен в Windows.
- person ManuelAtWork; 14.06.2021
Для большей переносимости вы можете вместо этого использовать python. Редактирую ответ на это.
- person Salamandar; 16.06.2021
Обновлять
Начиная с версии Meson 0.57.0, вы можете использовать функцию read
модуля файловой системы:
fs = import('fs')
...
my_list = fs.read('list.txt').strip().split('\n')
foreach item : my_list
# Do something
endforeach
person
ManuelAtWork
schedule
14.06.2021