How To Give A Function Access To A Variable In Another Functions's Inner For Loop?
The program renames the files from American MM-DD-YYYY date format to European DD-MM-YYYY date format. I need somehow to pass the value of
search_files function to the
rename_file function so I can change the name of the file. Any idea how can I do that?
I think it may be possible to associate every
fileName with it's new formatted name and to pass them as a dictionary. I didn't try this yet, but is there an easier way to do that?
def rename_file(europeanName): # Get the full, absolute file paths. currentPath = os.path.abspath('.') fileName = os.path.join(currentPath, fileName) europeanName = os.path.join(currentPath, europeanName) # Rename the files. shutil.move(fileName, europeanName) def form_new_date(beforePart, monthPart, dayPart, yearPart, afterPart): # Form the European-style filename. europeanName = beforePart + dayPart + '-' + monthPart + '-' + yearPart + afterPart rename_file(europeanName) def breakdown_old_date(matches): for match in matches: # Get the different parts of the filename. beforePart = match.group(1) monthPart = match.group(2) dayPart = match.group(4) yearPart = match.group(6) afterPart = match.group(8) form_new_date(beforePart, monthPart, dayPart, yearPart, afterPart) def search_files(dataPattern): matches =  # Loop over the files in the working directory. for fileName in os.listdir('.'): matchObj = dataPattern.search(fileName) # Skip files without a date. if not matchObj: continue else: matches.append(matchObj) breakdown_old_date(matches) def form_regex(): # Create a regex that can identify the text pattern of American-style dates. dataPattern = re.compile(r""" ^(.*?) # all text before the date ((0|1)?\d)- # one or two digits for the month ((0|1|2|3)?\d)- # one or two digits for the day ((19|20)\d\d) # four digits for the year (.*?)$ # all text after the date """, re.VERBOSE) search_files(dataPattern) if __name__ == "__main__": form_regex()
matches a list of tuples, and for each file that matches:
Then extract it out in
fileName = match
(don't forget to change your
match.group calls to
match.group), and pass it as a parameter to
form_new_date, then as a parameter to
Also, move the call to
breakdown_old_date) into the for loop, so it executes for each file you want to move.
(Alternatively, instead of making
matches a list of tuples, you could make it a dictionary.)
- → What are the pluses/minuses of different ways to configure GPIOs on the Beaglebone Black?
- → Django, code inside <script> tag doesn't work in a template
- → React - Django webpack config with dynamic 'output'
- → GAE Python app - Does URL matter for SEO?
- → Put a Rendered Django Template in Json along with some other items
- → session disappears when request is sent from fetch
- → Python Shopify API output formatted datetime string in django template
- → Shopify app: adding a new shipping address via webhook
- → Shopify + Python library: how to create new shipping address
- → shopify python api: how do add new assets to published theme?
- → Access 'HTTP_X_SHOPIFY_SHOP_API_CALL_LIMIT' with Python Shopify Module