[Tutor] path string
anatta anatta
kumarmysore at hotmail.com
Mon Jan 2 12:01:36 EST 2017
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/
>>>
More information about the Tutor
mailing list