Python传递选项卡“\ t”作为参数

时间:2014-05-22 22:14:39

标签: python

我有以下名为test.py的Python脚本。目标是让Python识别标签。我该怎么做?

import sys
input = sys.argv[1]
if __name__ == "__main__":
    print input == "\t"

当我将python test.py "\t"传递给命令行时,为什么我会获得False


[更新]

我根据以下前两条评论更改了代码:

import sys
someArgs = sys.argv[1]
if __name__ == "__main__":
    print someArgs
    print someArgs == '\t'

当我通过python test.py '\t'时,我得到了

\t
False

[更新2]

不幸的是,我使用的是Windows命令提示符,而不是* nix系统。


[快速&肮脏的解决方案]

"\t"作为参数在命令行中传递时,我可以尝试将其检测为"\\t"并手动将其分配给Python中的选项卡。例如,

import sys
someArgs = sys.argv[1]
if __name__ == "__main__":
    if someArgs == "\\t":
        pythonTab = "\t"
        print pythonTab

从命令行,python test.py "\t"将生成一个选项卡作为输出。任何人都有更优雅的解决方案吗?

3 个答案:

答案 0 :(得分:3)

反斜杠在Python和命令行中都有特殊含义。

您想要检测单个制表符吗?然后你正确地比较它:input == "\t"是正确的。但它依赖于系统来传递命令行中的制表符。我不知道如何在Windows上执行此操作。在使用Bash的Unix上,命令行应如下所示:

python test.py $'\t'

python test.py $'\011'

在此处查看有关Bash中$'语法的详细信息:http://www.gnu.org/software/bash/manual/bashref.html#ANSI_002dC-Quoting


你想检测两个字符:反斜杠和t?然后,您应将其比较为:input == "\\t"input == r"\t"。我不知道如何在Windows上的命令行中传递反斜杠。在使用Bash的Unix上,命令行应如下所示:

python test.py '\t'

在此处查看有关Bash中'语法的详细信息:http://www.gnu.org/software/bash/manual/bashref.html#Single-Quotes

我建议将以下调试信息生成添加到您的程序中:

print repr(argv[1])
print argv[1].encode('hex')

答案 1 :(得分:0)

这里有两个问题。

首先,\t仅在Python脚本中起作用 - 您需要命令行中的文字制表符。

其次是how to enter a literal tab on the command line

您输入command $'\t'

所以试试这个:

#!/usr/bin/python

import sys
in_part = sys.argv[1]
if __name__ == "__main__":
    print 'cmd[1]={}'.format(in_part)
    print in_part == "\t"

对于命令行:

tab.py $'\t'

答案 2 :(得分:-1)

如果你确定你的论点总是被引用," \ t"你可以使用:

ast.literal_eval(in_part)