我是新手,我想简单地确定在命令行上写什么来运行python程序(myprogram.py
),其中包含以下代码:
from http.server import test, SimpleHTTPRequestHandler
from argparse import ArgumentParser
from os import getcwd, chdir
from os.path import exists, relpath, join
from logging import getLogger
from pathlib import Path
info = getLogger(__name__).info
# (some lines not shown)
if __name__ == '__main__':
parser = ArgumentParser()
parser.add_argument('--bind', '-b', default='', metavar='ADDRESS',
help='Specify alternate bind address '
'[default: all interfaces]')
parser.add_argument('--port', '-p', default=8000, metavar='PORT',
type=int, help='Specify alternate port [default: 8000]')
parser.add_argument('dir', action='store',
default='.', type=Path, nargs='?',
help='Specify directory to serve [default: $PWD]')
args = parser.parse_args()
info('chdir({args.dir})'.format(args=args))
chdir(args.dir)
test(HandlerClass=NoCacheHandler, port=args.port, bind=args.bind)
该程序应该(除其他外)将工作目录更改为名为“static”的文件夹,该文件夹与myprogram.py位于同一位置。我尝试了很多东西(包括指定完整路径,带引号和不带引号,带嵌套引号等),例如:
$ python myprogram.py dir static
我明白了:
usage: myprogram.py [-h] [--bind ADDRESS] [--port PORT] [dir]
myprogram.py: error: unrecognized arguments: static
我阅读了几个文档(例如this)和示例等,但我被卡住了。谢谢!
答案 0 :(得分:0)
我可以看到两个问题;
dir
是第一个未标记的参数将进入的变量的名称。你没有在命令行中具体说明它,它的位置就是它的位置。因此,请尝试运行python myprogram.py static
。Path
是什么,但我认为你只想删除那个论点。如果未指定type
,则默认为string
能够保留路径。