for loop iter next if file bad
Sayth Renshaw
flebber.crue at gmail.com
Wed Dec 21 04:47:12 EST 2016
Hi
I am looping a list of files and want to skip any empty files.
I get an error that str is not an iterator which I sought of understand but can't see a workaround for.
How do I make this an iterator so I can use next on the file if my test returns true.
Currently my code is.
for dir_path, subdir_list, file_list in os.walk(my_dir):
for name_pattern in file_list:
full_path = os.path.join(dir_path, name_pattern)
def return_files(file_list):
"""
Take a list of files and return file when called.
Calling function to supply attributes
"""
for file in file_list:
with open(os.path.join(dir_path, file), 'rb') as fd:
if os.stat(fd.name).st_size == 0:
next(file)
else:
yield fd
Exact error is:
C:\Users\Sayth\Anaconda3\envs\race\python.exe C:/Users/Sayth/PycharmProjects/bs4race/race.py data/ -e *.xml
Traceback (most recent call last):
File "C:/Users/Sayth/PycharmProjects/bs4race/race.py", line 98, in <module>
data_attr(rootObs)
File "C:/Users/Sayth/PycharmProjects/bs4race/race.py", line 51, in data_attr
for xml_data in roots:
File "C:/Users/Sayth/PycharmProjects/bs4race/race.py", line 32, in return_files
next(file)
TypeError: 'str' object is not an iterator
Sayth
More information about the Python-list
mailing list