python - 将 python 数据导出/转换/生成到 Perl 哈希
问题描述
我在这里的第一篇文章:)
我编写了一个 python 脚本,它做了一些相当多的工作,最后脚本应该将它的一些输出写入 perlmodule。
这个 perlmodule 是用 Perl 编写的测试框架的一部分,但不可修改(我不能对这种类型的数据使用严格的 JSON)。
我目前的解决方案不是最优的(我认为),我想优化代码。我对 perl 不太了解,我只是开始使用它。
我目前的解决方案是在 python 中编写一个“字符串”,它具有要添加到 perlmodule 文件中的 Perl 哈希的正确语法(这个文件包含很多哈希和函数),基本上我想附加到这个 perlmodule 文件在python中。
# Example data generated from the py script
name_of_this_hash = "some_perl_hash_name"
name_of_folder = "some_testfolder"
name_of_file = "some_testfile"
description = "some_perl_description"
folder_and_name = name_of_folder + "/" + name_of_file
# Actual Export / Conversion to Perl Hash
string = "\n \
\n \
\n" + name_of_this_hash + " => \
\n{ \
\n _desc => '" + description + "', \
\n params => { message => '', additional_val => 0 }, \
\n consts => { enabled => 'net,mem', \
\n reports => 'net,mem', \
\n }, \
\n files => { \
\n storage_loc_1 => '" + folder_and_name + ".txt', \
\n }, \
\n debDesc => $debugDesc, mainvalues => $mainvalDesc, \
\n},"
# Dummy Print, string would be appended to perlmodule
print(string)
Python 代码将生成以下 Perl 哈希:
some_perl_hash_name =>
{
_desc => 'some_perl_description',
params => { message => '', additional_val => 0 },
consts => { enabled => 'net,mem',
reports => 'net,mem',
},
files => {
storage_loc_1 => 'some_testfolder/some_testfile.txt',
},
debDesc => $debugDesc, mainvalues => $mainvalDesc,
},
此哈希被以下内容包围:
our $TESTS =
{
# Generated Hashes go here
}
# Some functions that define what the test does
其他地方的框架克隆了这个“TESTS”并根据已设置(生成)的值执行功能。但任何进一步的可能都无关紧要。
如您所见,我正在使用 Perl Hash 语法编写字符串,并通过 python 添加一些变量并结合字符串。我希望能够让它“更干净”,而不是使用字符串来为 Perl 组成哈希。
输出string
将是我附加到 Perlmodule 的内容。
如何在 python 中直接创建这个 Perl 哈希,而不使用创建具有正确语法的字符串等插入到 perlmodule 文件中?
谢谢你的建议,曼努埃尔
编辑:更改字符串组成,如第一条评论中所述 :)
EDIT2:我现在明白我正在寻找的是 Perl 中的“哈希”或“哈希表”(而不是“对象”)(非结构化键值),与python中的“dict”相当-我已经改进了我的问题,使其更加清晰/具体
EDIT3:从生成的python代码中添加了示例输出
解决方案
推荐阅读
- umbraco - 使用 GitHub Desktop 克隆 umbraco 项目
- tensorflow - 无法使用非浮点 dtype 错误构建“密集”层
- r - 如何在 R 中使用 Caret 包进行训练、验证和测试?
- node.js - 退出前的 Console.log 页面内容
- css - Tailwind CSS 响应式断点覆盖不起作用
- java - Java BigInteger nextProbablePrime 方法如何工作?
- python - pandas to_datetime 将非零填充月份和日期转换为日期时间
- c# - Csvhelper Ingore 仅删除标题列名称,但未删除实际数据
- bash - 如果其中一个发送回声,有没有办法停止同时运行的脚本?
- reactjs - 删除帐户时的确认电子邮件