介子可以读取文件的内容吗
Posted
技术标签:
【中文标题】介子可以读取文件的内容吗【英文标题】:Can Meson read the contents of a file 【发布时间】:2017-11-08 08:27:47 【问题描述】:介子是否可以将文件的内容读入数组或字符串?从here 可以将一个字符串拆分为一个数组,并且可以用foreach
循环一个数组,但是我一直无法找到从文件中获取数据的方法。
【问题讨论】:
【参考方案1】:更新
从Meson 0.57.0开始,可以使用Filesystem模块的read
函数:
fs = import('fs')
...
my_list = fs.read('list.txt').strip().split('\n')
foreach item : my_list
# Do something
endforeach
【讨论】:
【参考方案2】:为了完成@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()
【讨论】:
这可以跨平台工作吗? (由于介子是用python编写的,我想你可以使用python模块来调用python脚本……) @Caesar 不,它没有。例如,cat
在 Windows 中不一定可用。
为了更便携,你可以使用 python 代替。我正在为此编辑答案。
我认为应该使用@0@
而不是0
作为命令字符串中的替换模式
是的,我错了。【参考方案3】:
不是直接不行,你可以使用run_command()
从另一个工具/脚本中获取它。
【讨论】:
以上是关于介子可以读取文件的内容吗的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 rails 中读取 file_store 缓存文件的内容吗?
Java中如何读取excel文件内容并且将内容以表格的形式显示在窗体里?