0

os.walk を使用してディレクトリ構造をたどり、ファイルを拡張子で照合して、ファイルを別の場所にコピーするスクリプトがあります。

これは私がファイルコピーのために持っているものです:

sourceDir=sys.argv[-2].rstrip("/")
destDir=sys.argv[-1].rstrip("/")
//copy code

だから私はちょうど電話します:

python mycode.py ~/a/ ~/b/ 

私がやりたいことは、検索パターンでも一致するオプションの引数スイッチを追加することです:

python mycode.py --match "pattern" ~/a/ ~/b/ 

私のコードでは、次の場合にこのエクストラを追加します。

if "--match" in sys.argvs:
  #try reference the string right after --match"
  for root, dir, files... etc

正確には、「一致」がsys.argvsにある場合、どうすれば「パターン」を見つけることができますか? Pythonは初めてなので、どんな助けでも大歓迎です。

ありがとう!

4

3 に答える 3

1

モジュール OptionParser を使用できます。例:

from optparse import OptionParser
usage = 'python test.py -m'
parse = OptionParser(usage)
parse.add_option('-m', '--match', dest='match', type='string'
                 default='', action='store',
                 help='balabala')
options, args = parse.parse_args()

更新: python2.7 を使用している場合は、argparseの方が優れています。使い方は OptionParser と同様です。

于 2013-01-09T02:25:20.237 に答える
0

自分で文字列を解析しようとしないでください。代わりにargparseモジュールを使用してください。

于 2013-01-09T02:24:54.023 に答える
0

ライブラリは、argparseオプションの引数の解析に優れています。

import argparse

p = argparse.ArgumentParser(description="My great script")
p.add_argument("sourceDir", type=str, help="source directory")
p.add_argument("destDir", type=str, help="destination directory")
p.add_argument("--match", type=str, dest="match", help="search pattern")

args = p.parse_args()

print args.sourceDir, args.destDir, args.match

そうすれば、提供されていない場合は次のようにargs.matchなります。None

Davids-MacBook-Air:BarNone dgrtwo$ python mycode.py ~/a/ ~/b/
/Users/dgrtwo/a/ /Users/dgrtwo/b/ None
Davids-MacBook-Air:BarNone dgrtwo$ python mycode.py --match "pattern" ~/a/ ~/b/
/Users/dgrtwo/a/ /Users/dgrtwo/b/ pattern

また、正しい数の引数がないかどうかもわかります。

usage: mycode.py [-h] [--match MATCH] sourceDir destDir
mycode.py: error: too few arguments

また、ヘルプ メッセージが含まれています。

Davids-MacBook-Air:BarNone dgrtwo$ python mycode.py -h
usage: mycode.py [-h] [--match MATCH] sourceDir destDir

My great script

positional arguments:
  sourceDir      source directory
  destDir        destination directory

optional arguments:
  -h, --help     show this help message and exit
  --match MATCH  search pattern
于 2013-01-09T02:25:02.653 に答える