使用python将文件夹从文件夹列表移动到其他文件夹列表

杰西是

你好,我想将许多文件夹从某个文件夹列表移动或复制到我使用的其他文件夹列表globshutil用于这项工作的库。

首先我创建一个文件夹列表:

import glob

#paths from source folder
sourcepath='C:/my/store/path/*'
paths = glob.glob(sourcepath)
my_file='10'
selected_path = filter(lambda x: my_file in x, paths)
#paths from destination folder
destpath='C:/my/store/path/*'
paths2 = glob.glob(destpath)
my_file1='20'
selected_path1 = filter(lambda x: my_file1 in x, paths2)

现在我有两个来自路径的列表(selected_pa​​th,selected_pa​​th1)

现在我想将文件夹从第一个列表(selected_path电影或复制到第二个列表(selected_path1

最后我尝试使用此代码移动文件夹但没有成功:

import shutil
for I,j in zip(selected_path,selected_path1)
     shutil.move(i, j)

但这行不通,任何ide如何让我的代码工作?

嫌犯

首先,显然您的使用lambda没有用,glob函数可以执行此过滤。这就是glob真正的作用,所以你基本上是用更多不必要的函数调用来乱扔你的代码,这在性能方面是相当昂贵的。

看看这个例子,和你的一样:

import glob

# Find all .py files
sourcepath= 'C:/my/store/path/*.py'
paths = glob.glob(sourcepath)

# Find files that end with 'codes'
destpath= 'C:/my/store/path/*codes'
paths2 = glob.glob(destpath)

其次,第二个glob函数调用可能会也可能不会返回目录列表以将目录/文件移动到。这使您的代码依赖于 C:/my/store/pathcontains. That is, you must guarantee that 'C:/my/store/path必须仅包含目录而不包含文件的内容,因此glob将仅返回要在shutil.move. 如果用户后来将文件而不是文件夹添加到 C:/my/store/path 恰好以名称“codes”结尾,并且他们没有指定任何扩展名(例如,codes.txt、codes.py...),那么你会在返回的globin列表中找到这个文件paths2当然,保证一个目录只包含子目录是有问题的,不是一个好主意,根本不是。您可以通过以下方式测试目录os.path.isdir

公告东西,你正在使用lambda的帮助下filter,以过滤掉任何字符串不包含10在你的第一次调用filter,有些东西你可以实现glob自己:

glob.glob('C:/my/store/path/*10*')

现在,任何名称中包含 10 的 C:/my/store/path 文件或子目录都将被收集在glob函数的返回列表中

第三,zip截断到其参数列表中最短的可迭代对象。换句话说,如果您想将每个路径 in移动paths到 中的每个路径paths2,则需要将 中的len(paths) == len(paths2)每个文件或目录pathsdirectory移动到 中paths2

第四,您错过了for循环的分号,并且在shutil.move的调用中使用iI. Python 是一种区分大小写的语言,I大写与i小写并不完全相同

import shutil
for I,j in zip(selected_path,selected_path1)            # missing :
     shutil.move(i, j)                                  # i not I 

更正的代码:

import shutil
for I,j in zip(selected_path,selected_path1)            # missing :
     shutil.move(I, j)                                  # i not I  

据推测,paths2仅包含 C:/my/store/path 目录的子目录,这是编写代码更好方法,但绝对不是最好的:

import glob

#paths from source folder
sourcepath='C:/my/store/path/*10*'
paths = glob.glob(sourcepath)

#paths from destination folder
destpath='C:/my/store/path/*20*'
paths2 = glob.glob(destpath)

import shutil
for i,j in zip(paths,paths2):
     shutil.move(i, j)

*我上面提到的一些以前的问题仍然适用于这个代码。

现在您已经完成了阅读这个答案的漫长马拉松,您想做什么来改进您的代码?如果您仍然发现一些不明确的地方,我会很乐意提供帮助。

祝你好运 :)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法将文件移动到其他文件夹

将文件从未知文件夹移动到其他文件夹

将嵌套文件夹的所有文件移动到其他文件夹

将文件夹移动到按年份排序的其他文件夹

将照片移动到其他文件夹iOS

将文件从文件夹移动到文件夹

使用PHP将整个文件夹的文件移动到其他文件夹的最快方法

python-如何仅将更新的文件从文件夹移动到文件夹?

根据创建日期和文件夹名称将文件移动到文件夹 Python

将Lotus Notes电子邮件移动到其他文件夹Python

使用文件夹名称键将文件夹移动到相应的子文件夹

使用C#将图像从阶梯子文件夹移动到主文件夹

使用sudo将文件夹移动到另一个文件夹

将文件以及git中的历史记录移动到其他文件夹

如何基于WinSCP上载的结果将文件批量移动到其他文件夹

将文件移动到Google云端硬盘中的其他文件夹

将文件从屏幕截图移动到其他文件夹

如何基于Powershell中的用户输入将文件移动到其他文件夹

无法将文件从列表框移动到新创建的文件夹

R根据列表或列将文件移动到文件夹

对于其他列表和文件夹传输

嵌套列表的文件夹

将文件从一个文件夹从文本文件的文件名列表移动到另一个文件夹

如何将引导程序字体移动到其他文件夹?

如何将Windows文件夹移动到其他驱动器?

将/ tmp文件夹移动到其他位置。/ tmp无法清空的问题

Applescript 将传入的图片延迟移动到其他文件夹

排除文件夹并阻止其他文件夹

将文件和文件夹移动到子文件夹