下面的Python脚本名为test.py。目标是让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"将生成一个选项卡作为输出。有谁有更优雅的解决方案吗?
发布于 2014-05-22 22:23:01
反斜杠在Python和命令行中都有特殊的含义。
要检测单个制表符吗?那么,您正在正确地比较它:input == "\t"是正确的。但是系统依赖于在命令行中传递一个制表符。我不知道在Windows上该怎么做。在使用Bash的Unix上,命令行应该如下所示:
python test.py $'\t'或
python test.py $'\011'请参阅有关$'语法的更多信息,此处为:002dC-Quoting
是否要检测两个字符:反斜杠和t?然后,您应该将其比较为:input == "\\t"或input == r"\t"。我不知道如何在Windows命令行中传递反斜杠。在使用Bash的Unix上,命令行应该如下所示:
python test.py '\t'请参阅有关'语法的更多信息,此处为:http://www.gnu.org/software/bash/manual/bashref.html#Single-Quotes
我建议将以下调试信息生成添加到程序中:
print repr(argv[1])
print argv[1].encode('hex')发布于 2014-05-22 22:31:36
你这里有两个问题。
首先,\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'发布于 2016-06-15 18:27:17
如果您确保始终引用您的论点"\t",您可以使用:
ast.literal_eval(in_part)https://stackoverflow.com/questions/23817939
复制相似问题