2015-12-30 56 views
2

我想创建一个备份程序来查找和复制所有txt文件从目录和子目录到另一个目录。我是python的新手,并尝试使用glob和shutil模块。我将我的路径添加到变量以使它们更易于更改。Python 3.4找到所有文件类型并复制到目录

import os 
import shutil 

src= "C:/" 
dest= "F:/newfolder" 

src_files = os.listdir(src) 
for file in src: 
    filename = os.path.join(src, file) 
    if file.endswith(".txt"): 
     shutil.copy(file, dest) 

回答

0

您有:for file in src:你的意思是for file in src_files:

试试这个:

import glob, os, shutil 

files = glob.iglob(os.path.join(source_dir, "*.txt")) 
for file in files: 
    if os.path.isfile(file): 
     shutil.copy2(file, dest_dir) 
+0

工作,谢谢! – axxic3

0

使用此脚本。 将所有文本文件从SRC复制到dest目录(目标是一个现有目录)

import os, shutil 

def copy(src, dest): 
    for name in os.listdir(src): 
     pathname = os.path.join(src, name) 
     if os.path.isfile(pathname): 
      if name.endswith('.txt'): 
       shutil.copy2(pathname, dest)  
     else: 
      copy(pathname, dest) 

copy(src, dest) 

如果你需要得到相同的目录树,使用此:

def copy(src, dest): 
    for name in os.listdir(src): 
     pathname = os.path.join(src, name) 
     if os.path.isfile(pathname):   
      if name.endswith('.txt'): 
       if not os.path.isdir(dest): 
        os.makedirs(dest) 
       shutil.copy2(pathname, dest)  
     else: 
      copy(os.path.join(src, name), os.path.join(dest, name)) 
+0

谢谢你的回答。林不知道我在用输出方式看你的脚本,我没有收到你在打印功能中的任何错误,如果这是为了调试我的问题。 – axxic3

+0

@ axxic3检查我的编辑。 – Zety

+0

@ axxic3如果您发现它有用,您可以投票,请问更多...? – Zety

0

因为Python 3.4有新的模块pathlib它可以遍历显示目录和子目录。 一种可能的方式来做你所需要的是创建生成器,吐出所有的txt文件。迭代生成器并使用shutil进行复制。

from pathlib import Path 
import shutil 

src= "C:/" 
dest= "F:/newfolder" 

generator = (str(f) for f in Path(src).iterdir() if f.is_file() and f.suffix=='.txt') 

for item in generator: 
    shutil.copy2(item, dest) 
相关问题