让我稍微解释一下调试方法.
当你遇到这种情况时len(sys.argv) != 1
,你应该问自己:"实际价值是len(sys.argv)
多少?为什么会这样?".答案是:
>>> len(sys.argv) 2 >>> sys.argv ['/tmp/basename.py', '/path/to/home/Desktop/pgCodes/']
我想现在问题应该变得更清楚了.
编辑:要解决第二个问题,您感兴趣的内容称为文件扩展名或后缀,而不是基本名称.这是完整的解决方案:
import sys, os def iflatten(xss): 'Iterable(Iterable(a)) -> Iterable(a)' return (x for xs in xss for x in xs) def allfiles(dir): 'str -> Iterable(str)' return iflatten(files for path, dirs, files in os.walk(dir)) def ext(path): 'str -> str' (root, ext) = os.path.splitext(path) return ext[1:] def main(): assert len(sys.argv) == 2, 'usage: progname DIR' dir = sys.argv[1] exts = (ext(f) for f in allfiles(dir)) for e in exts: print e if __name__ == '__main__': main()