我正在尝试检查此代码的用户是否仅使用一个命令行参数(文件名)从命令行运行此程序。当我像这样运行这段代码时(我在 Windows 上)
C:\>python program.py
Usage: program.py <file.txt>
C:\>
没错。但是当我使用我想要操作的文件运行这个程序时,我没有打印任何东西:
C:\>python program.py file.txt
C:\>
哪里出了问题,我的代码在这里
#!/Python26/
# -*- coding: utf-8 -*-
import sys
def main(argv):
if len(argv) < 2:
sys.stderr.write("Usage: %s <file.txt>" % (argv[0],))
return 1
if __name__ == "__main__":
sys.exit(main(sys.argv))
f = open(sys.argv[1])
lines = f.readlines()
f.close()
for line in lines:
line = line.strip()
etc...
请您参考如下方法:
您需要将 f = open... 及其他内容移至主函数中。就目前而言,它永远不会被执行,因为执行在 sys.exit 调用时结束。
[编辑] 顺便说一句,以这种方式构建模块是一种常见的 Python 习惯用法。这样,一个文件可以包含可以由另一个模块导入的类和函数定义,它还可以包含代码,例如测试,只有当文件作为脚本直接运行时才会执行。
