小编Dav*_* W.的帖子

在Python中解析行:是否使用RE?

我是一名Perl程序员,他试图通过我之前完成的一些工作并将其转换为Python来学习Python.这不是逐行翻译.我想学习Python技术来完成这类任务.

我正在解析Windows INI文件.部分名称采用以下格式:

[<type> <description>]
Run Code Online (Sandbox Code Playgroud)

<type>是一个单词字段,不区分大小写.在<description>可能是多个单词.

在一节之后,有一堆参数和值.这些是以下形式:

 <parameter> = <value>
Run Code Online (Sandbox Code Playgroud)

参数没有空格,只能包含下划线,字母和数字(不区分大小写).因此,第一个=是参数和值之间的分隔符.在等号周围可能存在将参数和值分开的空白区域.在行的开头或结尾可能有额外的空白区域.

在Perl中,我使用正则表达式进行解析:

while (my $line = <CONTROL_FILE>) {
    chomp($line);
    next if ($line =~ /^\s*[#;']/);     #Comments start with "#", ";", or "'"
    next if ($line =~ /^\s*$/);         #Ignore blank lines

    if ($line =~ /^\s*\[\s*(\w+)\s+(.*)/) {    #Section
        say "This is a '$1' section called '$2'";
    }
    elsif ($line =~ /^\s*(\w+)\s*=\s*(.*)/) {   #Parameter
       say "Parameter is '$1' with a value of '$2'";
    } …
Run Code Online (Sandbox Code Playgroud)

python for-loop

12
推荐指数
2
解决办法
2504
查看次数

Perl中的哈希常量

我有一个情况,我有一个应用程序,它映射到我需要在zipfile中处理的目录.映射非常简单:

CWA => "Financial",
PIP => "",
IFA => "IFA",
VDX => "Financial,
Run Code Online (Sandbox Code Playgroud)

也就是说,如果文件的名称以...开头CWA,我知道我必须使用的目录Financial.如果文件名以a开头IFA,我知道目录名是IFA.我想将其设置为哈希(很容易),但由于这些值并没有真正改变,我想将此key => value mapping设置为哈希常量.

我不相信这是可能的,所以我想做下一个最好的事情.那会是什么?或者,您可以设置哈希常量吗?

我正在考虑编写一个子程序,你传递一个参数,它返回正确的值.毕竟,它实际上是常量本身的工作方式,并且它保证了键和值之间的关系不会在整个程序中发生变化.

或者,我可以在程序开头简单地声明key => value关系,并希望key => value对不会被某些东西修改.这将更容易阅读,如果你必须更容易修改,因为它在我的源代码的最顶层.

实现key => value常量的最佳方法是什么?

perl constants

11
推荐指数
2
解决办法
9004
查看次数

Ivy,Ant,Jenkins - 在Jenkins构建中使用<ivy:cleancache>是个好主意吗?

我们将使用Ivy和Ant,我们将让Jenkins做我们的构建.我原本以为Jenkins <ivy:cleancache/>在运行构建之前会做一个好主意.(这将是强制性"清洁"目标的一部分).

但是,我现在看到的<ivy:cleancache>不仅仅是清理内容<ivy:cachepath>,而是真正删除了整个$HOME/.ivy/cache目录.

我担心的是,如果Jenkins <ivy:cleancache>在开始之前对所有构建进行了处理,它将干扰Jenkins可能正在执行的其他构建.

<ivy:cleancache>一个好主意,特别是如果一个用户可能同时进行多个构建?

事实上,当您<ivy:cachepath pathid="compile.path"/>在多个项目中进行操作时会发生什么?这也会影响詹金斯这样的事吗?如果多个构建同时构建,Jenkins会变得困惑compile.cachepath吗?

ant ivy jenkins

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

一起使用grep和awk

我有一个文件(A.txt),数字上有4列,另一个文件有3列数字(B.txt).我需要解决以下问题:

  1. 查找A.txt中的所有行,其第3列的编号显示在B.txt的第3列中的任何位置.

  2. 假设我在目录中有很多像A.txt这样的文件.我需要为该目录​​中的每个文件运行它.

我该怎么做呢?

bash awk grep

10
推荐指数
2
解决办法
6万
查看次数

CVSNT发生了什么?

在我们的网站上,我们目前使用在Solaris上运行的CVSNT作为源存储库服务器.我们在CVSNT中使用ACL功能并依赖于TortoiseCVS能够运行cvs ls命令,因此我们无法运行常规CVS服务器.

我最近注意到March Hare退出 CVSNT 的社区版本,现在收取426美元作为所有下载的分发费用.(商业版仅为每人85美元).

TortioseCVS附带了CVSNT,我注意到这个版本的CVSNT有一个烦人的习惯,即显示一个对话框,要求你升级到支持的版本,偶尔会在CVS提交评论中附加商业广告进行升级.

与此同时,似乎有一个名为EVS的新开源软件包,March Hare似乎正在推动其作为正式开源CVS的替代品.

究竟是怎么回事?EVS是TortoiseCVS可以使用的CVSNT的替代品吗?如果我们将CVS存储库升级为使用EVS,用户会注意到吗?

我可以继续使用CVSNT而无需支付426美元的分发费吗?

我们可能会在控制其他一些问题后立即转向Subversion,但我知道很多商店仍在使用CVS,我想知道使用Tortoise与CVSNT或继续使用CVSNT是否有任何许可问题处理源存储库.

cvsnt

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

通过脚本登录到远程服务器并执行一组命令

如何登录到远程服务器并执行一组命令,然后完成注销并继续我的脚本?

谢谢.

ssh bash command-line

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

Perl处理目录分隔符

我真的应该知道这一点,但我主要使用Linux,Mac OS X和Windows,它们都使用正斜杠(/)作为目录分隔符(Windows可以使用\或者/.).

这意味着当我通常在Perl中编写程序时,我可以简单地/用作目录分隔符,一切都很好.但是,我知道File::Spec假设允许文件分隔符的可移植性(无论这意味着什么).

如果我在一个不使用正斜杠作为目录分隔符的系统上,我理解用户希望能够使用默认分隔符输入文件,并使用默认分隔符查看输出.(例如,一个Windows用户将输入和输出期望是C:\Users\smith\Documents和不是C:/Users/smith/Documents),但到底是什么Perl的内部吗?

尽管平台可以用作目录分隔符,但我可以在内部处理文件时使用正斜杠.例如,我有一个目录$dir和一个名为的文件$file,我想打开该文件.我可以简单地说$dir/file,还是我必须使用File::Spec为我连接名称?

事实上,Perl程序是否需要在目录名中使用正斜杠?我正在编写一个模块,并将文件名传递给调用程序.我应该提供文件,/foo/bar/fubar或者如果系统使用像早期Macintosh操作系统那样的冒号,比如说:foo:bar:fubar

perl file-io

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

以非root用户身份运行Docker

我正在尝试以非root用户身份运行docker.当我尝试时,我收到以下错误:

$ docker ps
FATA[0000] Get http:///var/run/docker.sock/v1.18/containers/json: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS? 
Run Code Online (Sandbox Code Playgroud)

我可以以root身份运行docker:

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[...]
Run Code Online (Sandbox Code Playgroud)

我把这个用户放到了一个Unix组中docker:

$ groups
domain users docker suappprod stashadmin config_mgmt remote server access sudevmail sudevsvn
Run Code Online (Sandbox Code Playgroud)

但是,仍然看起来这个用户无法以root用户身份运行大多数docker命令.

我在旧版本的docker上:

$ docker --version
Docker version 1.6.1, build a8a31ef/1.6.1
Run Code Online (Sandbox Code Playgroud)

我知道最新版本是1.10,我们公司可以将所有docker安装更新到1.9.2,但这需要花费很多精力和时间.

还有什么我需要看的吗?用户已多次登录和注销.我还没有重新启动系统.

docker

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

Mac上Maven中的$ {path.separator}设置为":"

我们有几个人使用Windows和Maven的问题,我怀疑问题是与${path.separator}.他们得到一个错误,目录"D:\ basedir\target/dist"不存在.我们不会在Mac,Linux和Unix系统上出现此错误.

我想改变它${project.build.directory}${path.separator}dist,但在Mac上,价值${path.separator}:和不是/.现在我的构建在Mac上失败了,因为/Users/david/project/target:dist它不是一个有效的目录.

如何${path.separator}在Mac上设置默认设置/

properties pom.xml maven

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

用"连接"连接Perl中的字符串

请参阅下面的更新

我正在阅读一大堆Perl脚本,我公司的某个人写过这些脚本.他曾经join用来连接字符串.例如,他这样做(从真正的Perl脚本中取出):

$fullpath=join "", $Upload_Loc, "/", "$filename";
Run Code Online (Sandbox Code Playgroud)

而不是这个:

$fullpath = "$Upload_Loc" . "/" . "$filename";
Run Code Online (Sandbox Code Playgroud)

或者就是这样:

$fullpath = "$Upload_Loc/$filename";
Run Code Online (Sandbox Code Playgroud)

他不在了,但是在这里的人告诉我他以这种方式连接字符串,因为它在某种程度上更好.(他们不太清楚为什么).

那么,为什么有人会join在这个问题上使用.连接运算符,或者只是像第三个例子那样键入字符串?这种编码风格是否有正当理由?

我想在这里清理很多乱七八糟的东西,我的第一个想法是结束这种做法.它使代码更难阅读,我确信做一个join不是一种连接字符串的非常有效的方法.然而,虽然自从3.x版以来我一直在用Perl编写脚本,但我并不认为自己是一个大师,因为我从来没有机会和Perl比Perl更好的人和我教我Perl深刻的内心秘密.在我愚弄自己之前,我只是想确保我的直觉在这里是正确的.

我有更好的办法在这里做到这一点.


更新

人们变得困惑.他不只是为了连接路径.这是另一个例子:

$hotfix=join "", "$app", "_", "$mod", "_", "$bld", "_", "$hf", ".zip";
Run Code Online (Sandbox Code Playgroud)

我会在哪里做这样的事情:

$hotfix = $app . "_"  $mod . "_" . $bld . "_" . "$hf.zip";
Run Code Online (Sandbox Code Playgroud)

或者,更有可能

$hotfix = "${app}_${mod}_${bld}_${hf}.zip";
Run Code Online (Sandbox Code Playgroud)

或者在这种情况下,我可能实际使用,join因为下划线会导致问题:

$hotfix = join("_", $app, $mod, $bld, $hf) . ".zip";
Run Code Online (Sandbox Code Playgroud)

我的问题仍然是:他是否正在做一些真正的Perl黑客知道的事情,而像我一样只做了15年的新手却不知道?人们看着我使用串联字符串.或者只是将它们放在引号中并说"哈!真是个菜鸟!我敢打赌他也拥有一台Macintosh!"

或者,以前的家伙是否只有一种 …

perl

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

标签 统计

perl ×3

bash ×2

ant ×1

awk ×1

command-line ×1

constants ×1

cvsnt ×1

docker ×1

file-io ×1

for-loop ×1

grep ×1

ivy ×1

jenkins ×1

maven ×1

pom.xml ×1

properties ×1

python ×1

ssh ×1