介子可以读取文件的内容吗

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文件内容并且将内容以表格的形式显示在窗体里?

Azure 逻辑应用可以从存储帐户中读取 excel 文件吗?

XML 文件可以从 URL 读取数据吗?

如何逐行读取文本文件并使用android将每一行存储在数组中?可以在android中读取xls文件吗?