Примерно так: os.walk
:
import os
for root, dirs, files in os.walk(path_to_data_folder):
# if not root.endswith(good_folder_name):
# continue
for fname in files:
if fname_meets_my_criteria:
fpath = os.path.join(root, fname)
with open(fpath, 'r') as f, open(new_file_path, 'w') as newfile:
data = f.read()
# process file data
new_data = func_that_processes_data(data)
newfile.write(new_data)
с псевдокодом:
fname_meets_my_criteria
заменяетдля сравнения, это нужно, если вы хотите отфильтровать файлы для обработки - это может быть что-то вроде fname.edswith('.txt')
или not fname.endswith('.cfg')
new_file_path
- путь и имя для новогофайл, в который будут записаны обработанные данные.
Если вы намерены перезаписать файлы после того, как они были обработаны, используйте вместо этого:
for root, dirs, files in os.walk(path_to_data_folder):
# if not root.endswith(good_folder_name):
# continue
for fname in files:
if fname_meets_my_criteria:
fpath = os.path.join(root, fname)
with open(fpath, 'r') as f:
data = f.read()
# process file data
new_data = func_that_processes_data(data)
with open(fpath, 'w') as f:
f.write(new_data)
В обоих моих примерах файлы были открыты как текстовые файлы.Если вам нужно обработать байты вместо test / strings, откройте файлы с mode
аргументами 'rb'
или 'wb'