[英]How do I easily store a file and folder location with argparse and then use those values
我有Python模塊/腳本(取決於您閱讀的內容),我想打開一個文件並將其內容提取到目錄中,例如,使用file=sys.argv[1]
和folder=sys.argv[2]
可以正常工作但我想使用argparse來簡化最終用戶的使用。
if len(sys.argv) < 2:
print "Usage: '%s -h'" % sys.argv[0]
sys.exit(0)
def untar():
#Both these values to come from argparse
tarloc = tfile
dest = folder
#tarloc = sys.argv[1]
#dest = sys.argv[2]
filecount = 0
tar = tarfile.open(tarloc)
....etc
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Module to untar TAR files')
parser.add_argument('-f', "--file", help='File to open', action="store_true", dest="tfile")
parser.add_argument('-d', "--dest", help='Destination to extract to', action="store_true", dest="folder")
args = parser.parse_args()
print args
有人可以協助我展示如何獲取argparse來存儲args,以及如何使用它們。
argparse
還應該在if __name__ ==
部分的上方還是下方?
您的文件和目標參數都是必需的; 如果用戶未指定它們,則您的腳本將無關。
因此,請不要在此處使用-
或--
選項,而需要位置參數:
parser = argparse.ArgumentParser(description='Module to untar TAR files')
parser.add_argument('file', help='File to open')
parser.add_argument('folder', help='Destination to extract to')
args = parser.parse_args()
注意,我刪除了action
參數。 store_true
用於布爾標志選項 ; 例如,如果用戶在命令行上指定標志,則打開某些內容,則不接受任何參數。
接下來,將這些file
和folder
值傳遞給函數:
def untar(tarloc, folder):
filecount = 0
tar = tarfile.open(tarloc)
# ....etc
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Module to untar TAR files')
parser.add_argument('file', help='File to open')
parser.add_argument('folder', help='Destination to extract to')
args = parser.parse_args()
untar(args.file, args.folder)
您可能需要閱讀 Python文檔中包含的argparse
教程 ,以獲取更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.