簡體   English   中英

如何使用argparse輕松存儲文件和文件夾位置,然后使用這些值

[英]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用於布爾標志選項 例如,如果用戶在命令行上指定標志,則打開某些內容,則不接受任何參數。

接下來,將這些filefolder值傳遞給函數:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM