python和sys.argv
if len(sys.argv) < 2: sys.stderr.write('Usage: sys.argv[0] ') sys.exit(1) if not os.path.exists(sys.argv[1]): sys.stderr.write('ERROR: Database sys.argv[1] was not found!') sys.exit(1)  这是我正在处理的代码的一部分。 我想说的第一部分,如果用户不键入python programname something那么它将退出。 
第二部分我试图看看数据库是否存在。 在这两个地方,我不确定是否有正确的方式写出stderr的sys.argv的。
顺便说一句,你可以直接将错误消息传递给sys.exit:
 if len(sys.argv) < 2: sys.exit('Usage: %s database-name' % sys.argv[0]) if not os.path.exists(sys.argv[1]): sys.exit('ERROR: Database %s was not found!' % sys.argv[1]) 
在Python中,您不能只是将任意的Pythonexpression式embedded到文字string中,并用它replacestring的值。 您需要:
 sys.stderr.write("Usage: " + sys.argv[0]) 
要么
 sys.stderr.write("Usage: %s" % sys.argv[0]) 
 另外,您可能需要考虑使用以下print语法(对于早于3.x的Python): 
 print >>sys.stderr, "Usage:", sys.argv[0] 
 使用print可以使代码更容易阅读。  Python自动在print语句的参数之间添加一个空格,所以在上面的例子中,冒号后面会有一个空格。 
 在Python 3.x中,您可以使用print函数: 
 print("Usage:", sys.argv[0], file=sys.stderr) 
 最后,在Python 2.6及更高版本中,您可以使用.format : 
 print >>sys.stderr, "Usage: {0}".format(sys.argv[0]) 
我会这样做:
 import sys def main(argv): if len(argv) < 2: sys.stderr.write("Usage: %s <database>" % (argv[0],)) return 1 if not os.path.exists(argv[1]): sys.stderr.write("ERROR: Database %r was not found!" % (argv[1],)) return 1 if __name__ == "__main__": sys.exit(main(sys.argv)) 
 这允许main()被导入到其他模块,并且简化了debugging,因为你可以selectargv应该是什么。