这个 python 脚本有什么问题?

这个 python 脚本有什么问题?

我有这个代码:

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 能够正确处理参数,因为它们可能并不总是按照相同的顺序。

将来,严格关于代码的问题更适合堆栈溢出这可能更适合编程问题。

相关内容