Dear Tutor. I am trying to create unsuccessfully source path as a string 'str7' in part_1 of the code below, to be used in part_2 of the code. When I define the source path explicitly in part_2 of the code (#sourcePath = r'H://TCVFLDAT'), the code works right. How else could I find the path in part-1 and use it in part 2?
###################### Here is my code: ###################### # -*- coding: utf-8 -*- """ Created on Wed Jun 01 17:05:07 2016 @author: anatta """ # Required module import os import shutil ###part_1 ### looking for files to be copied and obtaining source path ### # Function for getting files from a folder def fetchFiles(pathToFolder, flag, keyWord): ''' fetchFiles() requires three arguments: pathToFolder, flag and keyWord flag must be 'STARTS_WITH' or 'ENDS_WITH' keyWord is a string to search the file's name Be careful, the keyWord is case sensitive and must be exact. Example: fetchFiles('/Documents/Photos/','ENDS_WITH','.jpg') returns: _pathToFiles and _fileNames ''' _pathToFiles = [] _fileNames = [] for dirPath, dirNames, fileNames in os.walk(pathToFolder): if flag == 'ENDS_WITH': selectedPath = [os.path.join(dirPath,item) for item in fileNames if item.endswith(keyWord)] _pathToFiles.extend(selectedPath) selectedFile = [item for item in fileNames if item.endswith(keyWord)] _fileNames.extend(selectedFile) elif flag == 'STARTS_WITH': selectedPath = [os.path.join(dirPath,item) for item in fileNames if item.startswith(keyWord)] _pathToFiles.extend(selectedPath) selectedFile = [item for item in fileNames if item.startswith(keyWord)] _fileNames.extend(selectedFile) else: print fetchFiles.__doc__ break # Try to remove empty entries if none of the required files are in directory try: _pathToFiles.remove('') _imageFiles.remove('') except ValueError: pass # Warn if nothing was found in the given path #if selectedFile == []: #print 'No files with given parameters were found in:\n', dirPath, '\n' #print len(_fileNames), 'files were found is searched folder(s)' #return _pathToFiles, _fileNames #print _pathToFiles, _fileNames print 'path to first tuple file is:', _pathToFiles [0] str1 = ' '.join(_pathToFiles [0]) #convert tuple element 0 to string print 'length of str1 is: ', len (str1) str2 = str1.replace(" ", "") #remove white spaces print 'str2 is', str2 str3 = str2[13:16] #extract rgeistration print 'str3 is registration:', str3 str4 = 'FLDAT' print 'str4 is: ', str4 str5 = str3.__add__(str4) print 'str 5 is: ',str5 str6 = 'H://' print 'str6 is: ', str5 str7 = str6.__add__(str5) print 'str7 is: ', str7 #print _fileNames print 'Number of files found: ', len(_fileNames) fetchFiles('H://','ENDS_WITH','.FLD') #### part_2 #### copying files from sourcePath to destPath #sourcePath = r'H://TCVFLDAT' sourcePath = r'str7' print 'Source path is: ', sourcePath destPath = r'c://test_o/' print 'Destination path is: ', destPath #ls=os.listdir('.')#list current dir #print('listing current dir\n') #print(ls) for root, dirs, files in os.walk(sourcePath): #figure out where we're going dest = destPath + root.replace(sourcePath, '') #if we're in a directory that doesn't exist in the destination folder #then create a new folder if not os.path.isdir(dest): os.mkdir(dest) print 'Directory created at: ' + dest else: print 'Directory already exists:' + dest for root, dirs, files in os.walk(sourcePath): #figure out where we're going dest = destPath + root.replace(sourcePath, '') filetype = '.FLD'# name the file ext to be copied print 'All files of this type will be copied', filetype #loop through all files in the directory for f in files: #compute current (old) & new file locations oldLoc = root + '\\' + f newLoc = dest + '\\' + f #print 'Old location is:', oldLoc #print 'New location is:', newLoc if not os.path.isfile(newLoc): try: #filetype = '.FLD'# name the file ext to be copied #print 'All files of this type will be copied', filetype filename, file_ext = os.path.splitext(oldLoc) print 'filename is:', filename print 'file ext is', file_ext if file_ext == filetype: shutil.copy2(oldLoc, newLoc) print 'File ' + f + ' copied.' else: print 'File ' + f + ' not copied' except IOError: print 'file "' + f + '" already exists' #################### Below is the output: #################### Python 2.7.11 |Anaconda 4.0.0 (64-bit)| (default, Feb 16 2016, 09:58:36) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. Anaconda is brought to you by Continuum Analytics. Please check out: http://continuum.io/thanks and https://anaconda.org >>> runfile('D:/university_2/my_code_2/2017_01_02/get_reg_&_copy_file.py', >>> wdir='D:/university_2/my_code_2/2017_01_02') path to first tuple file is: H://TCVFLDAT\TCV00000.FLD length of str1 is: 49 str2 is H://TCVFLDAT\TCV00000.FLD str3 is registration: TCV str4 is: FLDAT str 5 is: TCVFLDAT str6 is: TCVFLDAT str7 is: H://TCVFLDAT Number of files found: 21 Source path is: str7 Destination path is: c://test_o/ >>> _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor