Python 3.x Python中的多任务、重新格式化和移动
我有很多文件夹。我想制作.zip格式的文件并将其移动到另一个目录:Python 3.x Python中的多任务、重新格式化和移动,python-3.x,multitasking,Python 3.x,Multitasking,我有很多文件夹。我想制作.zip格式的文件并将其移动到另一个目录: for (dir, dirs, files) in os.walk(directory): for filename in files: # make zip files if filename.endswith(".zip"): # move created zip files os.re
for (dir, dirs, files) in os.walk(directory):
for filename in files:
# make zip files
if filename.endswith(".zip"):
# move created zip files
os.rename(dir + '/' + filename, new + '/' + directory + '/' + filename)
问题是,在生成zip文件后,程序找不到创建的具有zip扩展名的文件。我想创建zip格式并将其移动到另一个文件夹。您可以使用shutil库:
import shutil
shutil.move("path/to/current/file.foo", "path/to/new/destination/for/file.foo")
shutil.move(src、dst)
递归地将文件或目录(src)移动到另一个位置(dst)
如果目标是一个现有目录,那么src将被移动到内部
那个目录。如果目标已存在,但不是
目录,它可能会被覆盖,具体取决于os.rename()语义
如果目标位于当前文件系统上,则os.rename()为
用过。否则,src将被复制(使用shutil.copy2())到dst,然后
删除
您还可以将shutil用于存档文件: shutil.make_archive(基本名称,格式[,根目录[,基本目录[, 详细的[,干运行[,所有者[,组[,记录器]]].[]] 创建存档 文件(如zip或tar)并返回其名称
欲了解更多信息,请阅读我已编辑了我的问题。我的问题是,当我有这么多文件时,os.walk(目录)读取的是旧文件,而不是新创建的文件。@然后,一旦更改了文件名,在再次运行os.walk之前,您将看不到更改。一旦传递了os.walk的代码行,就得到了结果。为了查看更改,您需要再次调用os.walk,这样您将得到新的结果。在循环的迭代过程中,不可能看到更改。@然后,即使看到,在iterable上循环并在循环中更新Ierable也不是一个好的做法。但是您有什么建议?批量更新,然后批量移动?(这是我以前做的)@TheNone,如果你有很多文件,批量是一个不错的选择。如果只有很少的,你可以一次做所有的事情。