【问题标题】:How do I easily store a file and folder location with argparse and then use those values如何使用 argparse 轻松存储文件和文件夹位置,然后使用这些值
【发布时间】:2015-09-30 01:43:17
【问题描述】:

我有 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__ == 部分?

【问题讨论】:

    标签: python arguments argparse


    【解决方案1】:

    您的文件和目标参数都是强制性的;如果用户没有指定它们,您的脚本将无事可做。

    所以不要在这里使用--- 选项,您需要位置 参数:

    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 tutorial 以了解更多详细信息。

    【讨论】:

    • 干杯,完成了这项工作。我看过的教程,像你这样的一些例子将使该页面受益......
    猜你喜欢
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 2021-04-13
    • 2010-12-22
    • 1970-01-01
    相关资源
    最近更新 更多