【问题标题】:How to copy multiple files using wild cards in Python?如何在 Python 中使用通配符复制多个文件?
【发布时间】:2019-04-19 20:53:18
【问题描述】:

我正在尝试使用多个源位置和通配符作为文件名的一部分将文件从一个文件夹复制到另一个文件夹,但由于某种原因,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'])

【问题讨论】:

标签: python python-3.x file wildcard


【解决方案1】:

shutil.copy2src 参数需要一个字符串(或缓冲区),而不是列表。由于您确定只有一个匹配项,因此请获取glob.glob 返回的第一项,即glob.glob(...)[0]

【讨论】:

    【解决方案2】:

    像这样:

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

    【讨论】:

      猜你喜欢
      • 2018-09-22
      • 1970-01-01
      • 2013-08-24
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-22
      相关资源
      最近更新 更多