【发布时间】:2013-10-21 12:49:46
【问题描述】:
我正在编写一个 Python 脚本来为给定的术语和课程创建目录。我想使用 Python 模块 os、sys 和 getopt(具有短格式和长格式选项),以便运行脚本如下所示:
>python directory.py –t fall2013 –c cs311-400
>python directory.py –-term fall2013 –-class cs311-400
我现在写的代码是这样的:
import os
import sys
import getopt
term = ""
course = ""
options, args = getopt.getopt(sys.argv[1:], 't:c:', ['term=', 'course='])
for opt, arg in options:
if opt in ('-t', '--term'):
term = arg
elif opt in ('-c', '--course'):
course = arg
在此之后,我有一个函数,它接受术语和课程并使用 os.mkdir 等:
def make_folders(term, course):
if not os.path.isdir(term + course):
os.mkdir(term + course)
path = os.path.join(term + course, "assignments")
os.makedirs(path)
path = os.path.join(term + course, "examples")
os.makedirs(path)
path = os.path.join(term + course, "exams")
os.makedirs(path)
path = os.path.join(term + course, "lecture_notes")
os.makedirs(path)
path = os.path.join(term + course, "submissions")
os.makedirs(path)
make_folders(term, course)
由于某种原因,生成的文件夹只有一个代表学期的名称,而不是学期和课程的名称。我觉得这可能与我使用 getopt 有关,但我不确定。有什么建议吗?
【问题讨论】:
-
我认为 getopt 在 python2.7 中已被弃用 stackoverflow.com/a/3217687/2530083 使用
argparse代替 -
作为旁注,您是否意识到
path = os.path.join(whatever)和os.makedirs(path)行是重复的?使用for循环通过目录列表["assignments", "examples", "exams", "lecture_notes", "submissions"]重构它。 -
@rtrwalker
optparse已弃用。getopt为 C 用户保留。
标签: python unix command-line command-line-arguments getopt