2017-11-24 11 views
0

test.py -d "destination_to_copy_files"と入力すると、args.dが読み込まれ、 "config.dat"ファイル(これは動作します)が読み込まれます。ユーザーが指定した場所に、そのファイルからユーザーが指定した宛先に何かをコピーする必要があります。ユーザー入力からargsの宛先にファイルをコピーする

#!/usr/bin/python3 

import argparse 
import shutil 

parser = argparse.ArgumentParser() 
parser.add_argument('-c', default="config.dat", help='file to read the config from') 
parser.add_argument('-d', default='/home/admin/Documents/backup', help='destination to store files') 
args = parser.parse_args() 



if args.c: 
    with open(args.c, 'r') as file: 
     dest = '/home/admin/Documents/backup' 
     filelist = file.read().split('\n') 
     for file1 in filelist: 
      if file1: 
       shutil.copy(file1.strip(), dest) 

if args.d: 
     f = open('config.dat','r') 
     list_contents = f.read() 
     f.close() 
     #above reads 
     with open(args.d, 'r') as file: 
      dest = args.d 
      filelist = file.read().split('\n') 
      for file1 in filelist: 
       if file1: 
        shutil.copy(file1.strip(), dest) 

助けてください。

私は私が手にスクリプトを実行した場合:

File "./test.py", line 57, in <module> 
    with open(args.d, 'r') as file: 
IsADirectoryError: [Errno 21] Is a directory: 'backup/' 
+1

コードの出力はどのようなものですか?これであなたはどこにいるのですか? –

+0

これを実行すると返されるエラーを追加しました。どのように私はarg.dの入力をコピー先に指定することができるのか分かりません –

答えて

1

をあなたのコードは、あなたが望むように読み、args.dが先ディレクトリことを期待するが、その場合は、あなたが通常のようにそれを開いて読むことができませんファイル...なぜあなたはしたいですか?

if args.d: 
    with open('config.dat','r') as f 
     for line in f: 
      shutil.copy(line.strip(), args.d) 
+0

ああ、完璧なこと...私はそこで何をしたのか分かりません。 - 助けてくれてありがとう –

関連する問題