是否有相当于Perl的__DATA__文件句柄的Python?

时间:2016-07-14 08:17:38

标签: python perl filehandle

在Perl中,我经常从脚本末尾的文件句柄__DATA__中读取数据:

while (<DATA>) {
    chomp;
    say;
}
__DATA__
line1
line2 

我发现测试代码等比读取文件更快,因为这意味着我可以动态编辑其内容。

来自doc

  

__DATA__令牌告诉perl编译器perl代码   编译完成。

     

__DATA__令牌之后的所有内容都可通过   文件句柄FOOBAR::DATA,其中FOOBAR是当前的名称   在到达__DATA__令牌时打包。

Python中是否有等价物?如果没有,任何人都可以建议实现类似事物的最多Python方法吗?

1 个答案:

答案 0 :(得分:10)

不,Python中没有直接的等价物。将数据放在多行变量中:

{{ $product->vendorQuantity }}

如果您必须有权访问单独的行,则可以使用DATA = '''\ line1 line2 ''' v2 / v3 。您可以将它放在Python文件的末尾,前提是您只在整个模块加载后才调用的函数中使用名称DATA.splitlines()

或者,打开当前模块并从中读取:

DATA

然而,模块的其余部分仍然必须至少是有效的Python语法;不能告诉Python解析器停止解析超出给定点。

一般来说,在Python中,您只需将数据文件 next 放入源文件中即可读取。您可以使用with open(__file__.rstrip('co')) as data: for line in data: while line != '# __DATA__\n': continue # do something with the rest of the 'data' in the current source file. # ... # __DATA__ # This is going to be read later on. 变量生成“当前目录”的路径,从而生成同一位置的任何其他文件:

__file__