Python 正在尝试将具有特定扩展名的文件从源文件夹复制到目标文件夹
我正在测试将扩展名为“.yaml”的所有文件从一个文件夹(以及所有子文件夹)复制到另一个文件夹的想法。我想出了下面的代码Python 正在尝试将具有特定扩展名的文件从源文件夹复制到目标文件夹,python,python-3.x,Python,Python 3.x,我正在测试将扩展名为“.yaml”的所有文件从一个文件夹(以及所有子文件夹)复制到另一个文件夹的想法。我想出了下面的代码 import os import shutil src = 'C:\\Users\\ryans\\OneDrive\\Documents\\GitHub\\Pipeline\\' dest = 'C:\\Users\\ryans\\OneDrive\\Desktop\\AllYAML\\' #src_files = os.listdir(src) for root, d
import os
import shutil
src = 'C:\\Users\\ryans\\OneDrive\\Documents\\GitHub\\Pipeline\\'
dest = 'C:\\Users\\ryans\\OneDrive\\Desktop\\AllYAML\\'
#src_files = os.listdir(src)
for root, dirs, files in os.walk(src):
for filename in files:
full_file_name = os.path.join(src, filename)
if (os.path.isfile(full_file_name)):
if full_file_name.endswith('.yaml'):
shutil.copy(full_file_name, dest)
在大多数情况下,这似乎是正确的,但它只是将扩展名为“.yaml”的两个文件从源复制到目标。所有文件夹和子文件夹中大约有130个文件,因此我知道这里有问题,但我不太清楚问题出在哪里。您应该用文件名连接文件路径,而不是用文件名连接起始路径 更改:
full_file_name = os.path.join(src, filename)
致:
这将把src文件夹及其子文件夹中的所有.yaml文件复制到dest文件夹中,记住dest中不会维护src子文件夹结构
import os
import shutil
src = 'C:\\Users\\ryans\\OneDrive\\Documents\\GitHub\\Pipeline\\'
dest = 'C:\\Users\\ryans\\OneDrive\\Desktop\\AllYAML\\'
#src_files = os.listdir(src)
for root, dirs, files in os.walk(src):
for filename in files:
full_file_name = os.path.join(root, filename)
if (os.path.isfile(full_file_name)):
if full_file_name.endswith('.yaml'):
shutil.copy(full_file_name, dest)
文件名主要与它所属的相应目录连接,如
full\u file\u name=os.path.join(root,filename)我刚刚意识到有些文件具有相同的名称,但它们位于不同的文件夹中。当它们都被复制/粘贴到一个文件夹中时,我得到的文件会更少,因为有些文件会被覆盖。如果有多个文件同名,有没有办法增加文件名,比如在末尾加上1,2,3?哦,我刚知道。最后两行如下:shutil.copy(完整的文件名,dest+str(i)+''.'+文件名)i+=1
import os
import shutil
src = 'C:\\Users\\ryans\\OneDrive\\Documents\\GitHub\\Pipeline\\'
dest = 'C:\\Users\\ryans\\OneDrive\\Desktop\\AllYAML\\'
#src_files = os.listdir(src)
for root, dirs, files in os.walk(src):
for filename in files:
full_file_name = os.path.join(root, filename)
if (os.path.isfile(full_file_name)):
if full_file_name.endswith('.yaml'):
shutil.copy(full_file_name, dest)