2017-02-09 50 views
0

我有很多文件夹。我要让.zip文件的格式,并将其移动到另一个目录:Python中的多任务处理,重新格式化和移动

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格式并将其移动到另一个文件夹。

回答

1

可以使用shutil LIB:

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(BASE_NAME,格式[,ROOT_DIR [,base_dir [, 详细[,dry_run [,所有者[,组[,logger]]]]]]])

创建档案 文件(例如zip或tar)并返回其名称。

欲了解更多信息阅读shutil documentation

+0

我已经编辑我的问题。我的问题是,当我有这么多的文件,os.walk(目录)读取旧文件,而不是新创建的文件。 – TheNone

+0

@TheNone,一旦你改变了文件名,你将不会看到改变,直到你再次运行os.walk。一旦os.walk的代码行被传递,你就得到了结果。为了看到变化,你需要再次调用os.walk这样你会得到新的结果。在迭代循环时不可能看到变化。 –

+0

有什么方法可以动态循环? 1-创建压缩文件,2-移动文件和...... – TheNone