Je travaille sur un problème et est resté coincé dans un murchaîne d'insertion au milieu d'un fichier donné un objet fichier
J'ai un (potentiellement important) ensemble de fichiers texte, et je dois appliquer une séquence des filtres et des transformations et l'exporter vers d'autres endroits.
donc j'ai à peu près
def apply_filter_transformer(basepath = None, newpath = None, fts= None):
#because all the raw studies in basepath should not be modified, so I first cp all to newpath
for i in listdir(basepath):
file(path.join(newpath, i), "wb").writelines(file(path.join(basepath, i)).readlines())
for i in listdir(newpath):
fileobj = open(path.join(newpath, i), "r+")
for fcn in fts:
fileobj = fcn(fileobj)
if fileobj is not None:
fileobj.writelines(fileobj.readlines())
try:
fileobj.close()
except:
print i, "at", fcn
pass
def main():
apply_filter_transformer(path.join(pardir, pardir, "studies"),
path.abspath(path.join(pardir, pardir, "filtered_studies")),
[
#transformer_addMemo,
filter_executable,
transformer_identity,
filter_identity,
])
et FTS dans apply_filter_transformer est une liste de fonction qui prend un objet fichier python et retourner un objet fichier python. Le problème que j'ai rencontré est que lorsque je veux insérer des chaînes dans un objet texte, j'obtiens une erreur non informative et je suis bloqué pour toute la matinée.
def transformer_addMemo(fileobj):
STYLUSMEMO =r"""hellow world"""
study = fileobj.read()
location = re.search(r"</BasicOptions>", study)
print fileobj.name
print fileobj.mode
fileobj.seek(0)
fileobj.write(study[:location.end()] + STYLUSMEMO + study[location.end():])
return fileobj
et cela me donne
Traceback (most recent call last):
File "E:\mypy\reg_test\src\preprocessor\preprocessor.py", line 292, in <module>
main()
File "E:\mypy\reg_test\src\preprocessor\preprocessor.py", line 288, in main
filter_identity,
File "E:\mypy\reg_test\src\preprocessor\preprocessor.py", line 276, in apply_filter_transformer
fileobj.writelines(fileobj.readlines())
IOError: [Errno 0] Error
Si quelqu'un peut me donner plus d'informations sur l'erreur, je vous serais reconnaissant très bien.
Veuillez corriger le formatage. –