如何在多个子目录中找到所有具有相同扩展名的文件并使用 python 将它们移动到单独的文件夹?
How can find all files of the same extension within multiple subdirectories and move them to a seperate folder using python?
我已经将旧摄像机的内容复制到我的计算机上,在传输到那里的文件夹中有 100 多个子文件夹,所有子文件夹都包含我想要的 6 或 7 个文件。如何能够搜索所有文件并将所有找到的文件移动到新文件夹?
我对此很陌生,所以欢迎任何帮助。
要定位所有文件,有两种方法:
- 使用os.walker
示例:
import os
path = 'c:\location_to_root_folder\'
files = []
# r=root, d=directories, f = files
for r, d, f in os.walk(path):
for file in f:
if '.mpg' in file:
files.append(os.path.join(r, file))
for f in files:
print(f)
- 使用 glob
示例:
import glob
path = 'c:\location_to_root_folder\'
files = [f for f in glob.glob(path + "**/*.mpg", recursive=True)]
for f in files:
print(f)
要移动,可以使用以下3种方法中的一种,我个人更喜欢shutil.move:
import os
import shutil
os.rename("path/to/current/file.foo", "path/to/new/destination/for/file.foo")
shutil.move("path/to/current/file.foo", "path/to/new/destination/for/file.foo")
os.replace("path/to/current/file.foo", "path/to/new/destination/for/file.foo")
dswdsyd 在这里有正确的答案,尽管您可以更改打印输出以实际移动文件,如下所示:
import os
path = 'C:\location_to_root_folder\'
newpath = 'C:\NewPath\'
files = []
# r=root, d=directories, f = files
for r, d, f in os.walk(path):
for file in f:
if '.mpg' in file:
files.append(os.path.join(r, file))
for f in files:
os.rename(f, newpath + f.split('/')[-1])
print(f'{f.split('/')[-1]} moved to {newpath}')
我已经将旧摄像机的内容复制到我的计算机上,在传输到那里的文件夹中有 100 多个子文件夹,所有子文件夹都包含我想要的 6 或 7 个文件。如何能够搜索所有文件并将所有找到的文件移动到新文件夹? 我对此很陌生,所以欢迎任何帮助。
要定位所有文件,有两种方法:
- 使用os.walker
示例:
import os
path = 'c:\location_to_root_folder\'
files = []
# r=root, d=directories, f = files
for r, d, f in os.walk(path):
for file in f:
if '.mpg' in file:
files.append(os.path.join(r, file))
for f in files:
print(f)
- 使用 glob 示例:
import glob
path = 'c:\location_to_root_folder\'
files = [f for f in glob.glob(path + "**/*.mpg", recursive=True)]
for f in files:
print(f)
要移动,可以使用以下3种方法中的一种,我个人更喜欢shutil.move:
import os
import shutil
os.rename("path/to/current/file.foo", "path/to/new/destination/for/file.foo")
shutil.move("path/to/current/file.foo", "path/to/new/destination/for/file.foo")
os.replace("path/to/current/file.foo", "path/to/new/destination/for/file.foo")
dswdsyd 在这里有正确的答案,尽管您可以更改打印输出以实际移动文件,如下所示:
import os
path = 'C:\location_to_root_folder\'
newpath = 'C:\NewPath\'
files = []
# r=root, d=directories, f = files
for r, d, f in os.walk(path):
for file in f:
if '.mpg' in file:
files.append(os.path.join(r, file))
for f in files:
os.rename(f, newpath + f.split('/')[-1])
print(f'{f.split('/')[-1]} moved to {newpath}')