我是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
答案 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:\\'