如何在 Python 中使用通配符复制多个文件?
How to copy multiple files using wild cards in Python?
我正在尝试使用多个源位置和通配符作为文件名的一部分将文件从一个文件夹复制到另一个文件夹,但由于某些原因 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'])
shutil.copy2
的 src
参数需要一个字符串(或缓冲区),而不是列表。由于您确定永远只有一个匹配项,因此获取 glob.glob
返回的第一项,即 glob.glob(...)[0]
.
像这样:
for f in glob.glob('foo*'):
shutil.copy2(f, 'bar')
我正在尝试使用多个源位置和通配符作为文件名的一部分将文件从一个文件夹复制到另一个文件夹,但由于某些原因 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'])
shutil.copy2
的 src
参数需要一个字符串(或缓冲区),而不是列表。由于您确定永远只有一个匹配项,因此获取 glob.glob
返回的第一项,即 glob.glob(...)[0]
.
像这样:
for f in glob.glob('foo*'):
shutil.copy2(f, 'bar')