标签: command-line-interface

无法获取argparse读取带有破折号的带引号的字符串?

有没有办法让argparse将两个引号之间的任何内容识别为单个参数?它似乎继续看到破折号,并假设它是一个新选项的开始

我有类似的东西:

mainparser = argparse.ArgumentParser()
subparsers = mainparser.add_subparsers(dest='subcommand')
parser = subparsers.add_parser('queue')
parser.add_argument('-env', '--extraEnvVars', type=str,
                        help='String of extra arguments to be passed to model.')
...other arguments added to parser...
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时:

python Application.py queue -env "-s WHATEVER -e COOL STUFF"
Run Code Online (Sandbox Code Playgroud)

它给了我:

Application.py queue: error: argument -env/--extraEnvVars: expected one argument
Run Code Online (Sandbox Code Playgroud)

如果我离开第一个破折号,它的工作完全正常,但是能够传入带有破折号的字符串是至关重要的.我已经尝试用\来转义它,这会导致它成功但是将\添加到参数字符串有没有人知道如何解决这个问题?无论-s是否是解析器中的参数,都会发生这种情况.

编辑:我正在使用Python 2.7.

EDIT2:

python Application.py -env " -env"
Run Code Online (Sandbox Code Playgroud)

工作得非常好,但是

python Application.py -env "-env"
Run Code Online (Sandbox Code Playgroud)

才不是.

EDIT3:看起来这实际上是就是BEING已经讨论了一个错误:http://www.gossamer-threads.com/lists/python/bugs/89529,http://python.6.x6.nabble.com/issue9334- argparse-does-not-accept-options-taking-arguments-beginning-with-dash-regression-from-optp-td578790.html.它仅在2.7中而不是在optparse中.

EDIT4:当前的开放式错误报告是:http://bugs.python.org/issue9334

python command-line-interface argparse

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

删除文件中找到的字符串 - linux cli

我试图通过Linux CLI在文件中查找电子邮件地址来删除错误的电子邮件.

我可以用文件获取

find . | xargs grep -l email@domain.com

但我无法弄清楚如何从那里删除它们,因为以下代码不起作用.

rm -f | xargs find . | xargs grep -l email@domain.com

谢谢您的帮助.

linux file rm find command-line-interface

45
推荐指数
3
解决办法
6万
查看次数

为什么我的C#数组在转换为对象时会丢失类型符号信息?

调查一个bug,我发现这是由于c#中的这种奇怪:

sbyte[] foo = new sbyte[10];
object bar = foo;
Console.WriteLine("{0} {1} {2} {3}",
        foo is sbyte[], foo is byte[], bar is sbyte[], bar is byte[]);
Run Code Online (Sandbox Code Playgroud)

输出为"True False True True",而我希望" bar is byte[]"返回False.显然酒吧既是一个byte[]又是一个sbyte[]?同样的情况对于其他符号/无符号类型,如Int32[]VS UInt32[],但不是说Int32[]VS Int64[].

谁能解释这种行为?这是在.NET 3.5中.

c# arrays types command-line-interface

42
推荐指数
3
解决办法
2361
查看次数

在PHP CLI中设置max_execution_time

我知道通常使用PHP CLI是因为没有时间限制和主要因为它没有使用Apache线程/进程.

但有没有办法如何明确设置一些脚本的max_execution_time,我不想拥有"无限时间"的自由,只是想保持这些脚本的控制?

如果你认为这个问题可以在superuser.com上得到更好的解答并且有权移动它,那就去做吧.:)

编辑:我一直在谷歌搜索,找到了正确的参数:

php -d max_execution_time=5 script.php
Run Code Online (Sandbox Code Playgroud)

php linux command-line-interface

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

从python脚本中调用EDITOR(vim)

我想在python脚本中调用一个编辑器来征求用户的意见,就像crontab e或者git commit一样.

这是我到目前为止运行的片段.(将来,我可能会使用$ EDITOR而不是vim,以便人们可以根据自己的喜好进行自定义.)

tmp_file = '/tmp/up.'+''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(6))
edit_call = [ "vim",tmp_file]
edit = subprocess.Popen(edit_call,stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True )   
Run Code Online (Sandbox Code Playgroud)

我的问题是,通过使用Popen,它似乎让我的i/o与python脚本进入vim的运行副本,我找不到一种方法来将i/o传递给vim.我收到以下错误.

Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal
Run Code Online (Sandbox Code Playgroud)

什么是从python调用CLI程序,手动控制到它的最佳方法,然后在完成后将其传回去?

python vim editor command-line-interface

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

Lock语句与Monitor.Enter方法

我想这是一个有趣的代码示例.

我们有一个类 - 让我们称之为Test - 使用Finalize方法.在Main方法中有两个代码块,我使用lock语句和Monitor.Enter()调用.另外,我在这里有两个Test类的实例.实验非常简单:将Lock变量置于锁定块内,然后尝试使用GC.Collect方法调用手动收集它.因此,要查看Finalize调用,我将调用GC.WaitForPendingFinalizers方法.正如你所看到的,一切都很简单.

通过lock语句的定义,编译器将其打开到try {...} finally {..}块,并在try块和Monitor内部调用Monitor.Enter.然后它在finally块中退出.我试图手动实现try-finally块.

在两种情况下我都期望相同的行为 - 使用锁和使用Monitor.Enter.但是,令人惊讶的是,它有所不同,如下所示:

public class Test
{
    private string name;

    public Test(string name)
    {
        this.name = name;
    }

    ~Test()
    {
        Console.WriteLine(string.Format("Finalizing class name {0}.", name));
    }
}

class Program
{
    static void Main(string[] args)
    {
        var test1 = …
Run Code Online (Sandbox Code Playgroud)

c# garbage-collection command-line-interface

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

如何使用CLI删除AWS S3中的版本化存储桶?

我试过了两个s3cmd:

$ s3cmd -r -f -v del s3://my-versioned-bucket/
Run Code Online (Sandbox Code Playgroud)

和AWS CLI:

$ aws s3 rm s3://my-versioned-bucket/ --recursive
Run Code Online (Sandbox Code Playgroud)

但是这两个命令都只是DELETE向S3 添加标记.删除存储桶的命令也不起作用(来自AWS CLI):

$ aws s3 rb s3://my-versioned-bucket/ --force
Cleaning up. Please wait...
Completed 1 part(s) with ... file(s) remaining
remove_bucket failed: s3://my-versioned-bucket/ A client error (BucketNotEmpty) occurred when calling the DeleteBucket operation: The bucket you tried to delete is not empty. You must delete all versions in the bucket.
Run Code Online (Sandbox Code Playgroud)

好吧怎么办?他们的文档中没有关于此的信息.S3Cmd说它是一个"全功能"的S3命令行工具,但它没有引用除自己以外的版本.有没有办法在不使用网络界面的情况下做到这一点,这将永远需要我保持我的笔记本电脑?

command-line-interface amazon-s3 amazon-web-services s3cmd aws-cli

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

使用linux命令行(bash)从网络摄像头拍照

我很清楚已经提出了"确切" 相同的问题,但似乎最初发布问题的用户从未对这个问题感兴趣,并且答案都是针对Windows系统的.

我想每次都用网络摄像头拍照N time units并将其存储起来以便/tmp/somefolder/与其他工具一起使用,并且只保留last M images.

主要的问题是从图片开始,其余的我会覆盖,很高兴任何建议.操作系统:Ubuntu 10.04 x86_64网络摄像头:MS LifeCam VX2000和/或罗技C210(均使用奶酪)

linux webcam command-line-interface

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

Mac OS:/ usr/bin/env:错误的解释器:不允许操作

我正在尝试在Mac OS 10.7(Lion)上运行此脚本,我收到错误:

$ bbcolors
-bash: /usr/local/bin/bbcolors: /usr/bin/env: bad interpreter: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

我已成功在我的其他Mac上运行此脚本.这只是从Daring Fireball下载和修改的脚本.

我发现这个人有一个非常类似的问题,但接受的答案是文件系统在mount上有一个'noexe'选项.我很确定对我来说不是这样的,因为我刚刚将它放在/ usr/local/bin /中并且其他内容工作正常(它也不会从其他地方或其他用户运行,包括root) .

$ which bbcolors
/usr/local/bin/bbcolors
$ ls -l /usr/local/bin/bbcolors 
-rwxr-xr-x@ 1 nick  staff  9751 Mar 30 19:09 /usr/local/bin/bbcolors
Run Code Online (Sandbox Code Playgroud)

它是一个Perl脚本而不是编译的二进制文件,而不是那个重要的.这里有一些关于它的价值的额外信息:

$ cat /usr/local/bin/bbcolors |head -n 1
#!/usr/bin/env perl
$ which perl
/usr/bin/perl
$ env | grep PATH
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
Run Code Online (Sandbox Code Playgroud)

macos bash perl env command-line-interface

40
推荐指数
3
解决办法
3万
查看次数

PHP CLI不会记录错误

PHP目前不会记录命令行产生的错误.

我有 :

log_errors = On
error_log = /var/log/php_errors.log
Run Code Online (Sandbox Code Playgroud)

在/etc/php5/cli/php.ini中

我错过了进一步的设置让这个工作吗?

php error-logging command-line-interface

39
推荐指数
4
解决办法
7万
查看次数