使用 Jupyter notebook,我创建了一个 Python 代码,它将带有关键字的文件从一个目录复制到脚本中创建的新目录(即文件保存在:D:/Main_Folder/SubFolder1/SubFolder2,新目录将是D:/Main_Folder/SubFolder1/SubFolder2/NewFolder).
我使用
filedialog.askdirectory()
获取原始文件的目录,新目录将在该目录中创建。 Python 做错了并创建了如下新目录:
D:/Main_Folder/SubFolder1/SubFolder2\NewFolder
基本上创建了新文件夹,但改用反斜杠。有什么办法可以恢复文件吗?我使用了 shutil.copy 文件,所以我不完全确定为什么它们会从原始文件夹中删除。
import os
import shutil
from tkinter import Tk
from tkinter import filedialog
root = Tk()
root.withdraw()
folder_path = filedialog.askdirectory()
new_directory = os.path.join(folder_path, 'Red')
if not os.path.exists(new_directory):
os.makedirs(new_directory)
keyword = 'Red_'
for root_folder, _, filenames in os.walk(folder_path):
for filename in filenames:
if keyword in filename and filename.endswith(".tif"):
source = os.path.join(root_folder, filename)
destination_folder_name = os.path.basename(os.path.dirname(source))
destination_folder = os.path.join(new_directory, destination_folder_name)
if not os.path.exists(destination_folder):
os.makedirs(destination_folder)
destination = os.path.join(destination_folder, filename)
shutil.copyfile(source, destination)
print("Files copied to new folder!")
所以我不完全确定为什么它们会从原始文件夹中删除
这不可能是这段代码的结果,因为正如您所说,您已经使用了
copy
。
你已经很好地使用了正确的方法,例如
os.path.join
来连接路径的组件,而不是懒惰地只是 +"/"+
,这是我在使用 Python 之前所做的。
您没有手动输入任何斜杠。你已经从合法的方法中读取出来,并使用合法的方法将它们组合起来。
你在哪里看到混合了
/
和\
字符的路径名?
你确定他们事先在那里吗?
你能在整个目录树中搜索这些文件吗?
您手动将它们删除到回收站中的任何更改?
或将它们拖到另一个驱动器或子文件夹中?
如果上述方法失败,请尝试将(任何其他)TIF 文件引入该位置,然后修改代码并重新运行。改变
shutil.copyfile(源,目标)
到
print("我想复制",source,"到",destination)
然后重新运行,看看什么被移动到了哪里。
我真的很同情你,因为我自己也曾误删重要文件。但在这种情况下,我认为你展示的代码无法完成。
D:/$RECYCLE.BIN\红色
打开桌面上的回收站。 “红色”文件夹或任何图像在那里吗?也许按“删除日期”排序?
如果D:/不是你的电脑主盘,进入“我的电脑”,打开“D:”,看看有没有“$RECYCLE.BIN”。您可能需要打开显示隐藏文件和文件夹的选项:
(我仍然对如何混合正斜杠和反斜杠感到困惑,但至少它们没有完全消失。)
找到它们后,将它们拖到another drive.