1

I am a beginner at Python. Below is the testing code for Python's command line args. If executing from command line with different parameter formats, I get different results, but it feels strange, can anyone help me understand why?

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

BTW: I used Python 2.7.3

Test code:

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
4

2 回答 2

3

Maresh 和 Jakub 的回答不正确。

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

使用输入“D:\”运行以下命令:

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

产量:

'D:\\'
D:\

问题是在已经被视为字符串的内容周围加上引号只会将引号包含在字符串的一部分中。

于 2013-05-28T07:06:14.977 回答
1

问题不是来自您的程序,而是来自 shell 解释。

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

于 2013-05-28T06:57:42.087 回答