** Que expliquer dans cet article ** Exemple de code pour les fonctionnalités suivantes.
--Créez une liste de fichiers sous le répertoire spécifié --Vérifiez si le texte du fichier contient une chaîne spécifique
Environnement de développement
--python 2.7 ou supérieur
def generate_file_list(dirpath_to_search):
file_list = []
for dirpath, dirnames, filenames in os.walk(dirpath_to_search):
for filename in filenames:
file_list.append(os.path.join(dirpath,filename))
return file_list
Un exemple lorsque vous souhaitez acquérir de manière récursive les noms de fichiers sous sample1 avec la structure de répertoires suivante.
Exemple de structure de répertoire
sample1/
├── dir01
│ ├── dir11
│ │ └── file21.txt
│ └── file11.txt
├── file01.txt
└── file02.txt
comment utiliser
file_list = generate_file_list('sample1')
for file in file_list:
print(file)
#production
# sample1/file01.txt
# sample1/file02.txt
# sample1/dir01/file11.txt
# sample1/dir01/dir11/file21.txt
os.walk(top, topdown=True, onerror=None, followlinks=False)
Créez des noms de fichiers sous l'arborescence des répertoires en scannant l'arborescence de haut en bas ou de bas en haut. Rendez un tuple (dirpath, dirnames, noms de fichiers) pour chaque répertoire (y compris le haut lui-même) dans l'arborescence de répertoires enracinée en haut du répertoire.
def contain_text_in_file(filepath, text):
with open(filepath) as f:
return any(text in line for line in f)
Un exemple quand il y a des fichiers contain.txt
et not_contain.txt
comme indiqué ci-dessous et que vous voulez connaître le fichier qui contient" 2020/02/02 "dans le fichier.
contain.txt
Date de mise à jour: 2020/02/02
Cet article concerne la manipulation de fichiers python.
not_contain.txt
Date de mise à jour: 2019/10/15
Cet article concerne la manipulation de fichiers python.
comment utiliser
filepath1 = './contain.txt'
text = '2020/02/02'
result1 = contain_text_in_file(filepath1, text)
print(result1) # True
filepath2 = './not_contain.txt'
text = '2020/02/02'
result2 = contain_text_in_file(filepath2, text)
print(result2) # False
Ouvre le fichier et renvoie l'objet fichier correspondant.
Renvoie True si un élément de iterable est vrai. Renvoie False si iterable est vide. Équivalent au code suivant:
import re
def extract_text_in_file(filepath, pattern_prev, pattern_next):
extracted_text_array = []
pattern = pattern_prev + '(.*)' + pattern_next
with open(filepath) as f:
lines = f.readlines()
for line in lines:
tmp_extracted_text_array = re.findall(pattern, line)
extracted_text_array.extend(tmp_extracted_text_array)
return extracted_text_array
Un exemple quand il y a un fichier appelé file.txt
comme celui ci-dessous et que vous voulez extraire la partie de date entourée de" date de mise à jour "et" par ".
file.txt
Date de mise à jour:2020/02/01 by taro
Cet article concerne la manipulation de fichiers python.
Date de mise à jour:2020/02/02 by jiro
Cet article concerne la manipulation de fichiers python.
comment utiliser
filepath = './file.txt'
pattern_prev = 'Date de mise à jour:'
pattern_next = ' by'
extracted_text_array = extract_text_in_file(filepath, pattern_prev, pattern_next)
for extracted_text in extracted_text_array:
print(extracted_text)
#production
# 2020/02/01
# 2020/02/02
re.findall(pattern, string, flags=0)
Renvoie toutes les correspondances uniques pour le modèle dans la chaîne sous forme de liste de chaînes. La chaîne est scannée de gauche à droite et les correspondances sont renvoyées dans l'ordre où elles sont trouvées. Renvoie une liste de groupes s'il y a plus d'un groupe dans le modèle. Si le motif a plusieurs groupes, ce sera une liste de taples. Les correspondances vides sont incluses dans le résultat.
Ouvre le fichier et renvoie l'objet fichier correspondant.
Recommended Posts