【问题标题】:Python how to get parameters from bat filePython如何从bat文件中获取参数
【发布时间】:2016-01-06 16:03:42
【问题描述】:

我需要在 python 文件中将文件从源复制到目标。 用过

distutils.dir_util.copy_tree(src_dir,dest1_dir); 
distutils.dir_util.copy_tree(src_dir,dest2_dir);

src_dirdest1_dirdest2_dir 在 python 文件中被硬编码为

src_dir =/xx/ttt/yyy
dest1_dir=/xx/yyy/uuuu

但不想要硬编码。我从 abc.bat 文件中调用这个 python 脚本

如何将src_dirdest1_dirdest2_dir 从 bat 文件传递​​给 python 脚本,以及在 python 脚本中如何从 bat 脚本中获取传递的参数。 以便我替换复制树中的 src 和目标目录。

【问题讨论】:

    标签: python batch-file


    【解决方案1】:

    如果您想快速做某事,@AdamSmith 的方法会很棒。

    另一方面,如果您的程序将在选项上增长很多,或者您想创建更优雅的参数,例如:

    your_script --src-dir=src_dir --dest-dir=dest_dir

    您可以使用argparse,它会很好地完成这项工作。

    如果你想打印这样的东西:

    $ python copier.py -h
    usage: copier.py [-h] [--src-dir] [--dest-dir] 
    
    Copies a directory from source to destination
    
    positional arguments:
    --src-dir The source directory
    --dest-dir The destination directory
    
    optional arguments:
     -h, --help  show this help message and exit
    

    【讨论】:

      【解决方案2】:

      您可以使用

      访问整个参数值列表
      import sys
      
      sys.argv
      

      第一个元素始终是文件名,因此您查看的是sys.argv[1:]

      src, dst = sys.argv[1:]
      

      但是您为此使用distutils 模块有什么原因吗?它更经常来自shutil

      import shutil
      import sys
      
      src, dst = sys.argv[1:]
      try:
          shutil.copytree(src, dst)
          # shutil.copytree(src, dst2)  # how are you generating dst2?
      except Exception:
          # something went wrong. Unless there's a reasonable way to recover we should just
          raise
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-21
        • 1970-01-01
        • 2020-10-06
        • 1970-01-01
        • 1970-01-01
        • 2021-05-26
        • 2016-02-26
        • 1970-01-01
        相关资源
        最近更新 更多