0
옵션/인수로 프로그램 실행 중에 선택한 함수가 어떻게 결정됩니까? 예를 들어, 옵션에 따라 두 가지 옵션이 있는데, 각각의 기능을 사용하고 싶습니다. 내가 뭘 놓치고 있니?사용 된 옵션에서 실행할 함수 결정
import os, sys, glob
from optparse import OptionParser
def fname(arguments):
files = []
for arg in arguments:
if '*' in arg or '?' in arg:
# contains a wildcard character
files.extend(glob.glob(arg))
elif os.path.isdir(arg):
# is a dictionary
files.extend(glob.glob(os.path.join(arg, '*')))
elif os.path.exists(arg):
# is a file
files.append(arg)
else:
# invalid?
print '%s invalid' % arg
return files
# check if file exists locally, if not: download it
def downnload(filename, keyString):
if not os.path.exists(filename+keyString):
l.get_contents_to_filename(filename+keyString)
# List bucket contents
def blist(bucket):
for b in rs:
print b.name
def main():
usage = "usage: %prog [options] -f filename"
parser = OptionParser(usage)
parser.add_option('-d', '--download',
action='store', dest='download',
default=None, help='download files from cloud')
parser.add_option('-l', '--list',
action='store', dest='bucket',
default=None, help='list buckets or contents of specified bucket')
if len(sys.argv) == 1:
parser.print_help()
sys.exit()
(options, args) = parser.parse_args()
# from boto import
bucket_list = bucket.list()
for l in bucket_list:
keyString = str(l.key)
downnload(options.filename, keyString)
blist(options.bucket)
if __name__ == '__main__':
main()
blist로 목록을 변경하여 options.x를 사용하는 함수를 업데이트했으며, 인수는 일부 옵션에서는 선택 사항 일 수 있으며 다른 옵션에서는 필요합니까? – Astron
질문의 마지막 부분을 알지 못했습니다. 네, [ "부울 옵션 처리하기] 섹션을보십시오 (http://docs.python.org/library/optparse.html?highlight=optparse#handling-boolean-flag-options) –
좋은 아이디어, 그거 한 번 줘봐, 고마워! – Astron