Как скопировать несколько файлов с использованием подстановочных знаков в Python? - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь скопировать файлы из одной папки в другую, используя несколько исходных местоположений и подстановочные знаки как часть имен файлов, но по какой-то причине glob.glob не работает, как я ожидал (для каждого подстановочного знака используются только отдельные файлы, новерсия снимка меняется) - появляется ошибка need string or buffer, list found.

Часть кода Python для этого выглядит так:

content=[]
tomcatFiles=[]

def addToContent(srcFile, destFile):
    info={'src': srcFile, 'dest': destFile}
    content.append(info)

def addToTomcatFile(srcFile, destFile):
    info={'src': srcFile, 'dest': destFile}
    tomcatFiles.append(info)

def main():
    baseDir=sys.argv[1]
    intellijProjDir=sys.argv[2]

    deploy_dir=baseDir+'/TransferFiles'
    working_dir=intellijProjDir
    tomcatDir=deploy_dir+"/tomcat"

    addToTomcatFile('/project1/target/project1*.war', '/tomcat/project1.war')
    addToTomcatFile('/project2/target/project2*.war', '/tomcat/project2.war')
    addToTomcatFile('/projectX/target/projectX*.war', '/tomcat/projectX.war')

    for infoObj in tomcatFiles:
        addToContent(infoObj['src'], infoObj['dest'])

    for infoObj in content:
        shutil.copy2(glob.glob(working_dir + infoObj['src']), deploy_dir + infoObj['dest'])
        print('Copied ' + infoObj['dest'])

Ответы [ 2 ]

1 голос
/ 20 апреля 2019

shutil.copy2 требует строку (или буфер) для аргумента src, а не список.Поскольку вы уверены, что будет только один матч, получите первый элемент, возвращенный glob.glob, то есть glob.glob(...)[0].

0 голосов
/ 20 апреля 2019

Как это:

for f in glob.glob('foo*'):
    shutil.copy2(f, 'bar')
...