我正在寻找一个相当于awk脚本的Python等价物,根据记录中的一个标志将一个文件分成26个部分。这是因为在一个文件中有26种不同的记录类型,这是Burroughs在20世纪70年代使用的分层数据库的后遗症。我希望能够打开26个名为f_a到f_Z的文件,而不是传统的f1,然后在我读入这些文件时将这些记录流式输出,而不需要将整个记录保存在缓冲区中。在
# Gawk original - split new valuation roll format into record types A-Z
# run gawk -F\| -f split.awk input_file
# creates A.raw, B.raw, .... Z.raw
# Oct 1995
{ident = $8;
file = ident".raw";
print $0 >> file}
所以我想我可以创建一个文件句柄,然后用eval()或其他方法调用它来将每个记录定向到正确的输出。在
^{pr2}$我可以从f1.name获得系统文件的名称 并计算一个变量以获取句柄,例如eval(“f_a”) 但是我不知道如何用一个非硬编码的句柄打开文件。在
eval
是需要避免的,幸运的是,它几乎从未被需要过。在本例中,open(recType+".raw",'w')
创建一个文件句柄。你只需要把它和recType联系起来。这就是字典的用途。在在下面的代码中,
openFiles
是一个字典。每次我们遇到一个新的recType
,我们为它打开一个文件,并将它的filehandle保存在openFiles
中的键recType
下。每当我们想再次写入该文件时,我们只需向字典请求文件句柄。因此:相关问题 更多 >
编程相关推荐