传递含#的命令行参数时sys.argv无法获取参数的问题求助
解决Ubuntu下Python传递含#的命令行参数丢失问题
这是因为Linux Shell(比如Ubuntu默认的Bash)中,#是注释起始符号——shell解析命令时,会把#以及后面的所有内容都当成注释忽略掉,根本不会把这部分内容传给Python程序,所以sys.argv自然拿不到。
解决方法很简单,用以下两种方式处理含#的参数:
用引号包裹参数:单引号或双引号都可以,让shell把整个参数当作普通字符串处理
示例命令:python3 test.py 'hello#world'或者
python3 test.py "hello#world"用反斜杠转义#:告诉shell这是普通字符,不是注释开头
示例命令:python3 test.py hello\#world
验证一下,假设test.py的代码是:
import sys print(sys.argv)
执行上述任意命令,输出都会包含完整的含#参数,比如:
['test.py', 'hello#world']
内容的提问来源于stack exchange,提问作者RandomUser12312233
相关产品推荐
相关产品推荐

