Python pass tab“\t”作为argumen

2024-04-20 06:11:25 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的Python脚本名为test.py。目标是让Python识别tab。我该怎么做?在

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

当我将python test.py "\t"传递到命令行时,为什么要得到一个False?在


[更新]

我根据下面的前两条注释修改了代码:

^{pr2}$

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

\t
False

[更新2]

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


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

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

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

从命令行,python test.py "\t"将生成一个制表符作为输出。有人有更优雅的解决方案吗?在


Tags: 命令行namepytestimportfalseinputif
3条回答

如果确保始终引用参数“\t”,则可以使用:

ast.literal_eval(in_part)

你有两个问题。在

首先,\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"

对于命令行:

^{2}$

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

是否要检测单个制表符?那么您就正确地比较了:input == "\t"是正确的。但在命令行中传递制表符取决于系统。我不知道怎么在窗户上做。在带有Bash的Unix上,命令行应该如下所示:

python test.py $'\t'

或者

^{2}$

请参阅有关Bash中$'语法的更多信息:http://www.gnu.org/software/bash/manual/bashref.html#ANSI_002dC-Quoting


是否要检测两个字符:反斜杠和t?然后您应该将其比较为:input == "\\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')

相关问题 更多 >