Python命令行args格式问题

时间:2013-05-28 06:44:49

标签: python shell python-2.7

我是Python的初学者。下面是Python命令行参数的测试代码。如果从命令行执行不同的参数格式,我会得到不同的结果,但感觉很奇怪,任何人都可以帮我理解原因吗?

1, $test.py d:\     --> this seems ok for os.walk call
2, $test.py 'd:\'   --> this will cause nothing output

BTW:我使用的是Python 2.7.3

测试代码:

import os
import sys

if __name__ == '__main__':

    argMock = 'D:\\'

    path = len(sys.argv) > 1 and sys.argv[1] or argMock
    for root, dirs, files in os.walk(path):
        for name in files:
            print name

2 个答案:

答案 0 :(得分:3)

Maresh和Jakub的回答不正确。

命令行参数d:\将成为字符串“d:\”。 命令行参数'd:\'将成为字符串“'d:\'”。

使用输入'D:\'运行以下内容:

print sys.argv[1] # $test.py 'D:\\'
print argMock

的产率:

'D:\\'
D:\

问题在于,在已被视为字符串的内容周围加上引号,只会将引号作为字符串的一部分。

答案 1 :(得分:1)

问题不是来自你的程序,它来自shell解释。

当您编写'd:\'时,您的shell会将反斜杠解释为下一个字符的转义命令。因此,您必须像这样转义反斜杠:'d:\\'