小编Tyl*_*r D的帖子

getopt()没有强制执行必需的参数?

我在getopt()编写的脚本中遇到了这个代码的问题,该脚本执行了一些简单的文件操作,给出了2个必需参数(输入文件名和输出文件名)和/或2个可选/情境参数(调试或帮助).

代码是:

def main(argv):
    try:
        opts, args = getopt.getopt(argv, "i:o:dh", ["input-file=", "output-file=", "debug", "help"])
    except getopt.GetoptError:
        usage()
        sys.exit(2)

    for opt, arg in opts:
        if opt in ("-h", "--help"):
            usage()
            sys.exit()
        elif opt in ("-d", "--debug"):
            global _debug
            _debug = 1
        elif opt in ("-i", "--input-file"):
            u_input_file_name = arg
        elif opt in ("-o", "--output-file"):
            u_output_file_name = arg
Run Code Online (Sandbox Code Playgroud)

根据getopt()文件:

需要参数后跟冒号的选项(' :';即,与Unix getopt()使用的格式相同).

问题是,根据我的理解,:应该根据需要强制执行a后面的变量/ args ...但是选项io没有被强制执行.运行此代码段会u_input_file_name在分配之前获取有关被引用的错误:

[tdelane@fbsd81-1 ~/python]$ ./inco_add_cm_mpscli.py -o …
Run Code Online (Sandbox Code Playgroud)

python

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

使用sed进行数据转换

我有一个像这样的文件:

A
B
C
D

E
F
G
H

I
J
K
L
Run Code Online (Sandbox Code Playgroud)

我希望它能像它一样出现

A,B,C,D
E,F,G,H
Run Code Online (Sandbox Code Playgroud)

我假设我会使用sed,但实际上我甚至不确定这是否是最好的工具.我愿意使用Linux系统上常用的任何东西.

perl,我这样做了......它有效,但它很脏,有一个尾随的逗号.希望更简单的事情:

$ perl -ne 'if (/^(\w)\R/) {print "$1,";} else {print "\n";}' test
A,B,C,D,
E,F,G,H,
I,J,K,L,    
Run Code Online (Sandbox Code Playgroud)

perl awk sed

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

增加MAC地址

我正在尝试开发一个脚本,它将部分地从给定的起始基础生成MAC地址列表.我输入的是MAC地址列表,需要递增1.

例子:

00:1D:FE:12:37:1A(需要生成00:1D:FE:12:37:1B)
00:1D:FE:12:37:49(需要生成00:1D:FE:12:37:4A)
00:1D:FE:12:37:4F(需要生成00:1D:FE:12:37:50)

这里的限制是我需要在没有安装或不可用的"额外"perl模块的机器上运行此脚本,因此代码需要包含在脚本中.这意味着Net::MAC作为一个模块,但我可能会蚕食一些有用的东西并包含它但我想我应该做的不应该是完全复杂的在一个小函数中实现利用pack(?)或其他东西之类的.

我在像PerlMonks这样的论坛上发现了各种各样的线索,但似乎没有人能得到确凿的答案.任何输入将不胜感激!

perl

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

标签 统计

perl ×2

awk ×1

python ×1

sed ×1