Convert each element of a list to a string for processing - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Convert each element of a list to a string for processing (/thread-33951.html) |
Convert each element of a list to a string for processing - tester_V - Jun-13-2021 Greetings! I'm trying to remove a bunch of test files using 'glob'. I thought I could do it like this: prod_tod_to_Rem = glob.glob("C:/0001/**/*.txt", recursive=True) dev_tod_to_Rem =glob.glob("C:/04/**/*.txt",recursive=True) rm_lst = [prod_tod_to_Rem,dev_tod_to_Rem] tor = [str(i) for i in rm_lst] print(tor) try: os.remove(tor) print (f" Removing TXT Flies --> {tor}") except OSError as e: print("Error: CANNOT Remove TXT file -->>", e )for some reason this part of the snippet not converting the list element to a string. tor = [str(i) for i in rm_lst]Thank you. RE: Convert each element of a list to a string for processing - perfringo - Jun-13-2021 glob.glob returns list of strings, so converting to string once more is redundant. In your code you converting list to string, not list elements. You need to unpack first if you want to convert items in list: >>> spam = ['bacon', 'eggs'] >>> ham = [42, 2021] >>> [str(i) for i in [spam, ham]] ["['bacon', 'eggs']", '[42, 2021]'] >>> [str(i) for i in [*spam, *ham]] ['bacon', 'eggs', '42', '2021']However, in your case and if I understood your objective correctly, you should just unpack: rm_lst = [*prod_tod_to_Rem, *dev_tod_to_Rem] RE: Convert each element of a list to a string for processing - tester_V - Jun-14-2021 I'm trying to remove/clean a bunch of directories using 'glob.glob' I do not want to do 10 'try/except' for each directory. I thought I can make a list of directories prod_tod_to_Rem = glob.glob("C:/0001/**/*.txt", recursive=True) dev_tod_to_Rem =glob.glob("C:/04/**/*.txt",recursive=True) rm_lst = [prod_tod_to_Rem,dev_tod_to_Rem]and will pass them to the try/except one by one. I tried rm_lst = [*prod_tod_to_Rem, *dev_tod_to_Rem]it does the same thing like the rm_lst = [prod_tod_to_Rem,dev_tod_to_Rem] tor = [str(i) for i in rm_lst] print(tor)I might be confused and do not understand your suggestion... thank you. RE: Convert each element of a list to a string for processing - Pedroski55 - Jun-14-2021 If I wanted to remove all the .odt files in a directory and or subdirectories: import glob, os path = '/home/pedro/summer2021/**/' all_files = glob.glob(path + '*.odt') # careful with this, there is no going back for a in all_files: os.remove(a) RE: Convert each element of a list to a string for processing - snippsat - Jun-15-2021 (Jun-14-2021, 08:45 PM)tester_V Wrote: I thought I can make a list of directoriesYes you can here a example where make a list then iterate over with iglob from glob import iglob import os folders = [r'G:\div_code\1', r'G:\div_code\2'] for folder in folders: for f_name in iglob(f"{folder}/**/*.txt", recursive=True): os.remove(f_name) RE: Convert each element of a list to a string for processing - Gribouillis - Jun-15-2021 You can also write a glob function that takes several patterns from glob import iglob from itertools import chain def multiglob(ipattern, recursive=False): return chain.from_iterable(iglob(p, recursive=recursive) for p in ipattern) for tor in multiglob(("C:/0001/**/*.txt", "C:/04/**/*.txt"), recursive=True): try: ... RE: Convert each element of a list to a string for processing - tester_V - Jun-16-2021 iglobI did not know about it! Thank you guys! |