用python将两个不同文件夹中命名相同的文件复制到另一个文件夹
时间: 2023-07-31 17:09:24 浏览: 120
可以使用Python的shutil模块来实现文件复制。下面是一个示例代码,可以将两个不同文件夹中命名相同的文件复制到另一个文件夹:
```python
import os
import shutil
# 设置源文件夹路径和目标文件夹路径
src_folder_1 = "path/to/source/folder/1"
src_folder_2 = "path/to/source/folder/2"
dst_folder = "path/to/destination/folder"
# 获取源文件夹1中的所有文件名
src_files_1 = os.listdir(src_folder_1)
# 遍历源文件夹1中的文件
for file in src_files_1:
# 如果文件在源文件夹2中也存在
if os.path.exists(os.path.join(src_folder_2, file)):
# 复制文件到目标文件夹
shutil.copy(os.path.join(src_folder_1, file), dst_folder)
```
这段代码会先获取源文件夹1中的所有文件名,然后遍历这些文件名,对于每个文件名,如果该文件名在源文件夹2中也存在,就将该文件复制到目标文件夹中。可以根据实际情况修改文件夹路径和文件名匹配的条件。
相关问题
写一个python脚本,遍历两个文件夹中所有文件,复制一个文件夹下相同文件名的文件到第三个文件夹
当然可以,下面是一个简单的Python脚本示例,它会遍历两个指定的源文件夹(source_folder_1 和 source_folder_2),查找具有相同文件名的文件,并将它们复制到目标文件夹(target_folder):
```python
import os
# 定义源文件夹路径
source_folder_1 = "path_to_source_folder_1"
source_folder_2 = "path_to_source_folder_2"
# 定义目标文件夹路径
target_folder = "path_to_target_folder"
def copy_files(src_folder, target_folder):
# 遍历源文件夹中的每个文件
for folder in [src_folder, src_folder + '2']:
for root, dirs, files in os.walk(folder):
for file in files:
# 构建源文件完整路径
src_file_path = os.path.join(root, file)
# 构建目标文件相对路径
dst_file_path = os.path.join(target_folder, file)
# 检查目标文件是否存在,如果不存在则复制
if not os.path.exists(dst_file_path):
try:
# 使用shutil.copyfile复制文件
shutil.copyfile(src_file_path, dst_file_path)
print(f"File copied: {src_file_path} to {dst_file_path}")
except Exception as e:
print(f"Error copying file: {e}")
# 调用函数开始复制操作
copy_files(source_folder_1, target_folder)
```
请确保将`path_to_source_folder_1`, `path_to_source_folder_2`, 和 `path_to_target_folder`替换为你实际的文件夹路径。这个脚本假设文件夹结构和文件命名规则一致。
使用python,对比两个文件夹中的文件,其中一个文件夹里全是docx文件,另一个全部是pdf文件,两种文件完全一样则不考虑,如果找不到则复制该文件到第三个文件夹中
以下是一个使用Python实现你描述功能的脚本:
```python
import os
import shutil
from docx import Document
from PyPDF2 import PdfFileReader
def compare_docx(file1, file2):
"""比较两个docx文件内容"""
doc1 = Document(file1)
doc2 = Document(file2)
paragraphs1 = [para.text for para in doc1.paragraphs]
paragraphs2 = [para.text for para in doc2.paragraphs]
return paragraphs1 == paragraphs2
def compare_pdf(file1, file2):
"""比较两个PDF文件内容"""
with open(file1, 'rb') as f1, open(file2, 'rb') as f2:
pdf1 = PdfFileReader(f1)
pdf2 = PdfFileReader(f2)
num_pages1 = pdf1.getNumPages()
num_pages2 = pdf2.getNumPages()
if num_pages1 != num_pages2:
return False
for page_num in range(num_pages1):
page1 = pdf1.getPage(page_num).extractText()
page2 = pdf2.getPage(page_num).extractText()
if page1 != page2:
return False
return True
def find_differences(folder1, folder2, output_folder):
"""查找两个文件夹中的差异文件并复制到输出文件夹"""
for root, dirs, files in os.walk(folder1):
for file in files:
if file.endswith('.docx'):
file_path = os.path.join(root, file)
corresponding_pdf = os.path.splitext(file_path)[0] + '.pdf'
if not os.path.exists(corresponding_pdf):
output_path = os.path.join(output_folder, 'docx', os.path.relpath(file_path, folder1))
os.makedirs(os.path.dirname(output_path), exist_ok=True)
shutil.copy(file_path, output_path)
elif not compare_docx(file_path, corresponding_pdf):
output_path = os.path.join(output_folder, 'docx', os.path.relpath(file_path, folder1))
os.makedirs(os.path.dirname(output_path), exist_ok=True)
shutil.copy(file_path, output_path)
for root, dirs, files in os.walk(folder2):
for file in files:
if file.endswith('.pdf'):
file_path = os.path.join(root, file)
corresponding_docx = os.path.splitext(file_path)[0] + '.docx'
if not os.path.exists(corresponding_docx):
output_path = os.path.join(output_folder, 'pdf', os.path.relpath(file_path, folder2))
os.makedirs(os.path.dirname(output_path), exist_ok=True)
shutil.copy(file_path, output_path)
elif not compare_pdf(file_path, corresponding_docx):
output_path = os.path.join(output_folder, 'pdf', os.path.relpath(file_path, folder2))
os.makedirs(os.path.dirname(output_path), exist_ok=True)
shutil.copy(file_path, output_path)
# 使用示例
folder1 = 'path/to/folder/with/docx/files'
folder2 = 'path/to/folder/with/pdf/files'
output_folder = 'path/to/output/folder'
find_differences(folder1, folder2, output_folder)
```
这个脚本做了以下几件事:
1. 定义了两个函数 `compare_docx` 和 `compare_pdf` 来比较 .docx 和 .pdf 文件的内容。
2. 定义了 `find_differences` 函数,它会遍历两个输入文件夹,比较文件内容,并将差异文件复制到输出文件夹中。
3. 在 `find_differences` 函数中,它会分别处理 .docx 和 .pdf 文件,检查对应的配对文件是否存在,以及内容是否相同。
4. 如果没有找到对应的配对文件,或者文件内容不相同,就会将文件复制到输出文件夹的相应子文件夹中。
5. 最后,提供了使用示例,你需要将 `folder1`, `folder2` 和 `output_folder` 替换为实际的文件路径。
请注意,这个脚本使用了 `python-docx` 和 `PyPDF2` 库来处理 .docx 和 .pdf 文件。你可能需要先安装这些库:
```
pip install python-docx PyPDF2
```
此外,这个脚本假设 .docx 和 .pdf 文件的命名方式相似,例如 `document.docx` 和 `document.pdf`。如果你的文件命名方式不同,你可能需要调整配对文件的查找逻辑。
阅读全文