小编Eli*_*Eli的帖子

有没有办法将数据从Perl传递到Unix命令行实用程序

我有一个来自第三方的命令行实用程序(它很大,用Java编写),我一直用它来帮助我处理一些数据.此实用程序需要行分隔文件中的信息,然后将处理后的数据输出到STDOUT.

在我的测试阶段,我写了一些Perl来创建一个充满要处理的信息的文件,然后将该文件发送到第三方实用程序,但是因为我接近将这些代码投入生产,我真的更喜欢直接将数据传输到此实用程序而不是首先将该数据写入文件,因为这将节省我不得不将不需要的信息写入磁盘的开销.我最近在这个板上问过我如何在Unix中做到这一点,但后来才意识到直接从Perl模块中运行它会非常方便.也许是这样的:

system(bin/someapp do-action --option1 some_value --input $piped_in_data)

目前我调用该实用程序如下:

bin/someapp do-action --option1 some_value --input some_file

基本上,我想要的是将所有数据写入变量或STDOUT,然后通过SAME Perl脚本或模块中的系统调用将其传输到Java应用程序.这将使我的代码更加流畅.如果没有它,我最终需要编写一个Perl脚本,该脚本调用一半的bash文件,反过来需要调用另一个Perl脚本来准备数据.如果可能的话,我很乐意在整个过程中留在Perl.有任何想法吗?

unix bash perl

2
推荐指数
1
解决办法
1145
查看次数

Bash脚本中的SSH弄乱文件读取

我有一个脚本,可以逐行读取文件,并根据读取的内容执行操作.它所做的一件事是ssh到远程服务器并获取一些信息.出于某些原因,这完全超出了我的范围,这会阻止从文件中读取行.

该脚本本质上是(为了简化问题我已经删除了很多,所以如果看起来它没有真正做任何事情,请不要担心):

cat $csv | while read line; do
   shopt -s nocasematch
   for j in "${file_list[@]}"; do
      found=0;
      for i in $(ssh some_server "ls /some_path/${line:0:1}/${line:1:1}/$line*"); do
         if [[ $i =~ .*$j$ ]]; then
            echo "do something";
            found=1;
            break;
         fi;
      done;
      if [[ $found -ne 1 ]]; then
         echo "don't have $j";
      fi;
      if [[ $found -ne 1 && $j == '\.pdf' ]]; then
         getPDF $line ${dest};
      fi;
   done;
   shopt -u nocasematch
done
Run Code Online (Sandbox Code Playgroud)

这个脚本最终只能在csv的第一行运行.如果我用其他任何东西替换脚本的"ssh"部分,它会在文件的所有行上一直运行.是什么赋予了?

unix bash

2
推荐指数
1
解决办法
901
查看次数

运行一个插件与多个插件之间的性能差异是什么

我目前处于这样一种情况,即我正在构建一个我知道需要插入多行的脚本.我在Perl中这样做,所以在参数化方面,单独插入每一行要容易得多.在速度方面,我猜测只运行一个插入语句会更快(虽然延迟会相对较低,因为我非常接近数据库本身).我认为每次运行脚本的行数平均约为20-40.也就是说,运行1个INSERT INTO语句与每行运行一个语句之间的近似性能差异是什么?注意:服务器正在运行SQL 2008.

[编辑]由于似乎存在很多混淆,我想澄清一下,我真正要求的是SQL Server 2008如何处理多行插入的理论.它本质上只是转换它在内部插入一堆单独的插入语句并通过一个连接运行它们,还是做一些更聪明的事情?

是的,我知道我可以运行定时循环.不,那不是我要求的.[/编辑]

sql perl

2
推荐指数
1
解决办法
210
查看次数

如何使Perl正确解释Unicode字节?

我有一个非常糟糕的文件,充满了unicode字节,我正在努力清理.该文件中的一些示例如下:

????
roler coaster
digital social party
big bellie
cornacopia
\xd0\xb7\xd1\x83\xd0\xb1\xd0\xbd\xd0\xb0\xd1\x8f \xd1\x89\xd0\xb5\xd1\x82\xd0\xba\xd0\xb0
Run Code Online (Sandbox Code Playgroud)

现在,我想要做的是将所有那些丑陋的字节点转换为真正的unicode文本.所以,上面将输出为:

????
roler coaster
digital social party
big bellie
cornacopia
?????? ?????
Run Code Online (Sandbox Code Playgroud)

我一直在敲打我的头,反对如何在Perl中这样做一个小时,我现在已经没有好主意了.如果你有一个,我很乐意听到它.

unicode perl utf-8

2
推荐指数
1
解决办法
227
查看次数

从JSON加载类变量?

我有一个类,我将从JSON的行中实例化很多.就像是:

class Something:
    def __init__(self, json):
        #load all self variables from simplejson.loads(json) here
        print self.some_variable_loaded_from_json
Run Code Online (Sandbox Code Playgroud)

我希望这个效率尽可能高,因为这个类每秒加载数百次.我知道我可以在从simplejson生成的字典中使用键/值对进行for循环,但是如果有一种方法可以让simplejson直接加载到没有O(n)开销的类变量,那就太棒了.

python json python-2.7

2
推荐指数
1
解决办法
2898
查看次数

Redis Lua 不识别 Inf?

我正在 Redis 中编写 Lua 脚本,并且有一行打破了一切:

local to_remove = redis.call('ZRANGE', KEYS[1], -5, "+inf")
Run Code Online (Sandbox Code Playgroud)

返回:

redis.exceptions.ResponseError: Error running script (call to f_f1d95d2e103f00220a476f0ef2a2abc798682c55): ERR value is not an integer or out of range
Run Code Online (Sandbox Code Playgroud)

如果我用任何数字替换“+inf”,这将完全消失。我也试过“inf”和“-inf”,但这些都不起作用。想法?

lua redis

2
推荐指数
1
解决办法
461
查看次数

尝试/除了班级中的每个方法?

我目前正在使用Google的BigQuery API,它在调用时偶尔会给我:

apiclient.errors.HttpError: <HttpError 500 when requesting https://www.googleapis.com/bigquery/v2/projects/some_job?alt=json returned "Unexpected. Please try again.">
Run Code Online (Sandbox Code Playgroud)

返回是一件很愚蠢的事情,但无论如何,当我为任何一种方法得到这个时,我只想睡一两秒然后再试一次.基本上,我想用以下方法包装每个方法:

def new_method
    try:
        method()
    except apiclient.errors.HttpError, e:
        if e.resp.status == 500:
            sleep(2)
            new_method()
        else:
            raise e
Run Code Online (Sandbox Code Playgroud)

这样做的好方法是什么?

我不想显式重新定义类中的每个方法.我只是想自动将一些东西应用到课堂上的每一个方法中,所以我对未来有所了解.理想情况下,我会采取一个类的对象,O,并围绕它的包装,重新定义每个方法的类此尝试不同的包装,所以我得到了一些新的对象,P,当它得到一个500错误自动重试.

python

2
推荐指数
1
解决办法
723
查看次数

如何强制Perl中的对象属性设置为完整数组而不仅仅是其长度?

我有一个我用方法childNodes()定义的对象,它返回一个数组.当我做类似的事情时:

my @arr = obj->childNodes()

我可以清楚地看到它可以正确返回数组.

我的问题是,当我尝试使用此方法设置另一个类对象的属性时,Perl决定我只想要childNodes()的长度而不是完整的数组.这根本不是我想要的,并且毁掉了一切.我正在使用的代码是:

$self->{'_arr'} = obj->childNodes()

如何将此set $ self - > {'_ arr'}设置为数组而不仅仅是标量数?

提前致谢!

perl

1
推荐指数
1
解决办法
143
查看次数

Redis中嵌套结构的替代方案?

我一直在遇到存储更复杂信息的情况,而不是Redis的任何简单数据结构.我仍然想使用Redis,但我想知道是否有人使用的标准替代品,理想情况下他们想使用嵌套结构?

redis

1
推荐指数
1
解决办法
2993
查看次数

在没有外键的SQLalchemy ORM中指定连接条件

我在SQLAlchemy中有两个模型,这些模型已自动加入外键,如下所示:

class Parent(Base):
    __tablename__ = 'parents'

    id = Column(Integer, primary_key=True)
    name = Column(String(300), nullable=False)
    metadata_id = Column(Integer, nullable=True, index=True)

class Child(Base):
    __tablename__ = 'children'

    id = Column(Integer, primary_key=True)
    name = Column(String(300), nullable=False)
    parent_metadata_id = \
        Column(ForeignKey('parents.metadata_id'),
               nullable=True, primary_key=True)
    parent = relationship(u'Parent')
Run Code Online (Sandbox Code Playgroud)

这个工作很好,我可以很容易地从孩子的父母那里得到帮助。现在,由于超出了此问题范围的技术原因,我不得不摆脱数据库中的外键。我试图在SQLAlchemy中解决该问题,但是没有任何替换代码(使用primaryjoins或backrefs)起作用。我在这里看到了另一个答案,只是说这是对SQLAlchemy的谎言,并告诉我我具有外键关系,但这使Alembic尝试在我自动生成的每个新修订版本上创建外键关系,这确实很烦人。什么是正确的方法?

python mysql sqlalchemy alembic

1
推荐指数
1
解决办法
3136
查看次数

标签 统计

perl ×4

python ×3

bash ×2

redis ×2

unix ×2

alembic ×1

json ×1

lua ×1

mysql ×1

python-2.7 ×1

sql ×1

sqlalchemy ×1

unicode ×1

utf-8 ×1