2011-11-29 24 views
0

我是Python的新手,我創建了以下函數,根據列表中的項目(promptList)從目錄(livepromptDir)複製文件)。到目前爲止,它只將列表中的第一個項目複製到目標目錄。請幫忙!提前致謝。如何從基於Python中的文件名列表中的項目目錄複製文件

def copyItemToPrompt(): 
    #This function will copy all of the appropriate Voice Prompt files from LivePrompts directory to promptDir based on promptList 

    os.chdir(livepromptDir) 
    try: 
     for i in range(0,len(promptList)): 
      for filename in fnmatch.filter(os.listdir(livepromptDir), promptList[i]): 
       shutil.copy(filename, promptDir) 
      return 

    except Exception as error: 
     log(logFile, 'An error has occurred in the copyLiveToPrompt function: ' + str(error)) 
     raise 
+2

改變你回一個縮進背 – favoretti

回答

2

你要移動的returnfor循環,否則你的函數的第一個迭代後返回。事實上,你甚至不需要回報:

def copyItemToPrompt(): 
    """This function will copy all of the appropriate Voice Prompt files from LivePrompts directory to promptDir based on promptList""" 

    os.chdir(livepromptDir) 
    try: 
     for i in range(0,len(promptList)): 
      for filename in fnmatch.filter(os.listdir(livepromptDir), promptList[i]): 
       shutil.copy(filename, promptDir) 

    except Exception as error: 
     log(logFile, 'An error has occurred in the copyLiveToPrompt function: ' + str(error)) 
     raise 
+0

它的工作現在。非常感謝你。 –

0

正如@rcriii提到的,​​回報是什麼是短路的功能。我不確定你想要完成什麼,但我想你只是想從一個目錄複製文件列表到另一個目錄,給出一個glob模式列表。

如果是這樣的話,並給你有這樣的目錄:

. 
├── a 
│   ├── file1 
│   ├── file2 
│   └── tmp3 
└── b 

這個功能應該給你一點更清潔的方式來做到這一點(的東西像for i in range...一般不使用像你在這裏。)另外,如果您未能更改回來,更換目鏡有時會給您未來的問題。

import shutil 
from itertools import chain 
from os import path 
from glob import glob 

def copy_with_patterns(src, dest, patterns): 
    # add src dir to given patterns 
    patterns = (path.join(src, x) for x in patterns) 

    # get filtered list of files 
    files = set(chain.from_iterable(glob(x) for x in patterns)) 

    # copy files 
    for filename in files: 
     shutil.copy(filename, filename.replace(src, dest)) 

調用這個函數是這樣的:

copy_with_patterns('a', 'b', ['file*']) 

會讓你的目錄現在看起來是這樣的:

. 
├── a 
│   ├── file1 
│   ├── file2 
│   └── tmp3 
└── b 
    ├── file1 
    └── file2 
+0

非常感謝您的幫助。 –

相關問題