我有这个代码:
from sys import argv
import os
bold = "\033[1m"
reset = "\033[0;0m"
try:
argv[1]
except IndexError:
print("\nNo arguments! Add \"-h\" or \"--help\" for more info." + bold + "\n\nNow look what you've done!" + reset)
else:
pass
if argv[1] == "-h" or "--help":
print("\nxxxx, version 0.0.2")
print("xxxx is a simple tool for the command line used for quickly saving\n\
chunks of text, while providing more functionality than the traditional method\n\
(e.g. echo \"HELLO WORLD\" > hi.txt) used in bash.")
print("\nUsage: sans-sheriff [text] [directory] [options]")
print("\nOptions:\n\
-h, --help Display this help message and exit.\n\
-v, --verbose Output more verbosity.\n\
-e=utf8, --encoding Sets the encoding. Default is utf-8.\n\
utf16\n\
utf32\n\
ascii\n\
iso (8859-1)\n\
-text Sets the filetype. Default is \".txt\".\n\
html\n\
rtf\n\
tex\n\
-o, --open Open the file directly after.\n\
\n\
e.g. xxxx \"Hello World\" /home/user/Documents/myfile -e=utf32")
else:
try:
argv[2]
except IndexError:
print("No directory argument! Add \"-h\" or \"--help\" fopr mor info." + bold + "\n\nNow look what you've done!" + reset)
else:
pass
usrtxt = argv[1]
usrdir = argv[2]
usrtxt = open(usrdir, "w")
它应该根据用户的参数创建文本文件,如下所示:
xxxx \"Hello World\" /home/user/Documents/myfile
-h
但是,无论何时像提供的示例那样启动它,它只会加载在或争论时产生的输出--help
......它这样做似乎不合逻辑,而且我对 python 还是个新手,所以任何帮助都会非常感谢!
答案1
你使用的方式or
不正确。在你的示例中,正确的做法是:
if argv[1] == "-h" or argv[1] == "--help":
或是一个布尔运算符,描述如何处理两个不同的比较。因此,您提供的内容就像说
keep_going = False
if argv[1] == "-h":
keep_going = True
if "--help":
keep_going = True
这毫无意义。从技术上讲,只是or "--help"
因为True
是非"--help"
空字符串。
此外,得益于蒂莫,你可以使用
if argv[1] in ("-h", "--help"):
哪一个被认为更Python 方式
最后,你应该考虑以下事情参数解析以便 Python 能够正确处理参数,因为它们可能并不总是按照相同的顺序。
将来,严格关于代码的问题更适合堆栈溢出这可能更适合编程问题。