我对将每个子目录中的一个文件移动到其他新子目录有疑问。因此,例如,如果我有图片中显示的目录
然后,我只想选择每个子目录中的第一个文件,然后将其移动到另一个新的子目录中,其名称与从图像中看到的名称相同。这是我的预期结果
我尝试使用os.walk选择每个子目录的第一个文件,但是我仍然不知道如何将其移动到同名的另一个子目录
path = './test/'
new_path = './x/'
n = 1
fext = ".png"
for dirpath, dirnames, filenames in os.walk(path):
for filename in [f for f in filenames if f.endswith(fext)][:n]:
print(filename) #this only print the file name in each sub dir
预期结果可以在上图中看到
答案 0 :(得分:0)
您快到了:)
您需要的是拥有完整的文件路径:旧路径(现有文件)和新路径(您要将文件移动到的位置)。
如this post中所述,您可以在Python中以不同的方式移动文件。您可以使用“ os.rename”或“ shutil.move”。
这是经过全面测试的代码示例:
import os, shutil
path = './test/'
new_path = './x/'
n = 1
fext = ".png"
for dirpath, dirnames, filenames in os.walk(path):
for filename in [f for f in filenames if f.endswith(fext)][:n]:
print(filename) #this only print the file name in each sub dir
filenameFull = os.path.join(dirpath, filename)
new_filenameFull = os.path.join(new_path, filename)
# if new directory doesn't exist - you create it recursively
if not os.path.exists(new_path):
os.makedirs(new_path)
# Use "os.rename"
#os.rename(filenameFull, new_filenameFull)
# or use "shutil.move"
shutil.move(filenameFull, new_filenameFull)