从用户输入将文件复制到args目标

时间:2017-11-24 10:30:00

标签: python python-3.x

当用户提示test.py -d“destination_to_copy_files”时,它会读取args.d并读取“config.dat”文件(可以正常工作)。我希望用户指定的位置然后将该文件中的任何内容复制到用户提到的目标。

#!/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 :(得分:1)

您的代码按您的意愿读取并期望args.d成为目标目录但如果是这种情况,则无法像常规文件一样打开和阅读它...以及为什么你想要吗?

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