【问题标题】:How to copy a bunch of files with same name to a folder?如何将一堆同名文件复制到一个文件夹中?
【发布时间】:2020-11-07 13:51:48
【问题描述】:

我有一些扩展名不同的文件。 这些文件位于不同的文件夹中并且具有相同的名称。 我想同时复制这些文件并重命名它们。

我有:

  • ti.txt
  • ti.xlxsx
  • ti.pdf

我想将其重命名为:

  • Archive_1.txt
  • Archive_2.xlsx
  • Archive_3.pdf

PS:我会在这个新文件夹中有几个相同类型的文件

我研究并找到了用于编写代码的 Shutil 库,但我遇到了问题。有人有什么想法可以开始吗?

这是我尝试过的

# importing os module
import os

# importing shutil module
import shutil

# path
path = r'D:\Usuarios\0025429\Desktop\old_folder'

# List files and directories
# in '/home/User/Documents'
print("Before copying file:")
print(os.listdir(path))

# Source path
source = r"D:\Usuarios\0025429\Desktop\old_folder\IQ.txt"
source = r"D:\Usuarios\0025429\Desktop\old_folder\IQ.xlsx"
source = r"D:\Usuarios\0025429\Desktop\old_folder\IQ.docx"
# Print file permission
# of the source
perm = os.stat(source).st_mode
print("File Permission mode:", perm, "\n")

# Destination path
destination = r"D:\Usuarios\0025429\Desktop\new_folder"

# Copy the content of
# source to destination
dest = shutil.copy(source, destination)
# List files and directories
# in "/home / User / Documents"
print("After copying file:")
print(os.listdir(path))

# Print file permission
# of the destination
perm = os.stat(destination).st_mode
print("File Permission mode:", perm)

# Print path of newly
# created file
print("Destination path:", dest)

【问题讨论】:

  • 试一试并在此处提及您尝试过的内容。
  • 我用我试过的代码编辑了帖子

标签: python file directory copy shutil


【解决方案1】:

您可以使用pathlib 处理文件系统,并使用shutil 中的copy() 复制每个文件。

from shutil import copy
from pathlib import Path

src = Path(r".\dir1")
dst = Path(r".\dir2")
idx = 0
for file in src.iterdir():
    if file.is_file():
        idx += 1
        copy(file, (dst / f"Archive_{idx}").with_suffix(file.suffix))

要仅重命名具有给定名称的文件,请使用下一个代码:

from shutil import copy
from pathlib import Path

src = Path(r".\dir1")
filename = "123"
dst = Path(r".\dir2")
idx = 0
for file in src.iterdir():
    if file.is_file() and file.stem == filename:
        idx += 1
        copy(file, (dst / f"Archive_{idx}").with_suffix(file.suffix))

【讨论】:

  • 那行得通。有什么方法可以让我只选择同名的文件吗?因为该文件夹有 'IQ.txt' (.doc) (.pdf) (.xlsx) 并且还有其他名称的文件
  • @Hendrik,您只想复制同名文件吗?我的意思是 2 个或更多同名但扩展名不同的文件?
  • 是的,只有同名。在其他文件夹中,我具有相同的扩展名和相同的名称,但内容不同。我想复制所有这些文件重命名文件,独立于它具有相同或不同的扩展名。
  • @Hendrik,不清楚如何重命名。例如。 1.txt1.jpg1.pdf 将变为 Archive_1.txtArchive_2.jpgArchive_3.pdf,但如果还有 2.txt2.jpg 呢?应该是Archive_4.txtArchive_5.jpg?
  • 有什么方法可以让我只复制和重命名名为“1.jpg”的文件,而不是那些在“2.jpg”中重复的文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多