从perl到python

2024-04-25 07:07:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些代码,我已经从perl翻译成python,但我有一段时间试图找出这最后一部分。你知道吗

my $bashcode=<<'__bash__';
. /opt/qip/etc/qiprc;
. /opt/sybase/sybase.sh
perl -mdata::dumper -e 'print dumper \%env';
__bash__
my $var1;
eval qx(bash -c "$bashcode");

虽然我了解(一点)这是在做什么,但我似乎不知道如何在python中做到这一点。任何帮助都将不胜感激。你知道吗


Tags: 代码envbashmyshetcperlprint
2条回答

本部分:

my $bashcode=<<'__bash__';
. /opt/qip/etc/qiprc;
. /opt/sybase/sybase.sh
perl -mdata::dumper -e 'print dumper \%env';
__bash__

是一个here doc,你可以用Python来做:

bashcode="""\
. /opt/qip/etc/qiprc;
. /opt/sybase/sybase.sh
perl -mdata::dumper -e 'print dumper \%env';
"""

您可以使用os.systemsubprocess.check_output之类的工具来完成Bash。你知道吗

然后将结果反馈给eval,作为Perl代码运行。你知道吗

eval的智慧和结果取决于这些Bash命令生成的内容。看起来这些命令正在生成一个Perl脚本。显然,这不会在Python中执行。Python还有eval。在任何语言中使用eval都要谨慎。)

在Perl中使用\%env似乎表示可以访问主机的环境。但是,访问操作系统环境哈希的实际Perl变量是ENV大写。在Bash中,使用小写env访问环境

要访问Python中的主机环境,请使用os.environ

你的程序正在生成一个脚本并运行它。你知道吗

第一个python近似值是:

import os
script=""". /opt/qip/etc/qiprc;
          . /opt/sybase/sybase.sh
          perl -mdata::dumper -e 'print dumper \%env';
"""
os.system(script)

如您所见,perl仍在您的脚本中使用,该脚本使用模块data::dumper。如果您想在这里使用python,您可能需要等效的模块。你知道吗

相关问题 更多 >