O script abaixo faz o trabalho recursivamente.
Usando exatamente o texto do seu exemplo:
#!/usr/bin/env python3
import os
import sys
dr = sys.argv[1]
def addlines(file):
"""
the list below contains the lines, to be added at the top. The lines will
appear in separate lines. In case you want to add an extra line break, use
\n like in the last two lines in the example- content below.
"""
return [
"abcdgd "+file.replace(".txt", "")+" dhsgabc",
"shcnwk shfgamvk",
"cjshjg nwdcbi",
"skfh",
"nwvjcnd",
"skfh dvwuv",
"fshvur",
"\negfbt hethtn nhnh",
"\ngdngng dehdnnrty",
]
for root, dirs, files in os.walk(dr):
for file in files:
path = root+"/"+file
# first read the file and edit its content
with open(path) as new:
text = ("\n").join(addlines(file))+"\n"+new.read()
# then write the edited text to the file
with open(path, "wt") as out:
out.write(text)
Altera um arquivo chamado:
Liesje leerde Lotje lopen.txt
com conteúdo:
aap
noot
para:
abcdgd Liesje leerde Lotje lopen dhsgabc
shcnwk shfgamvk
cjshjg nwdcbi
skfh
nwvjcnd
skfh dvwuv
fshvur
egfbt hethtn nhnh
gdngng dehdnnrty
aap
noot
Como usar
- Copie o script em um arquivo vazio, salve-o como
change_file
- Altere a função
addlines(file)
do texto (mas não toque em +file.replace(".txt", "")+
. \n
significa uma quebra de linha (n extra).
-
Execute-o com o diretório de destino como um argumento (o diretório com seus arquivos):
python3 /path/to/change_file /directory
se /directory
incluir espaços, use aspas:
python3 /path/to/change_file '/directory'
Nota
Se os arquivos são realmente enormes , podemos precisar otimizar o procedimento em uma abordagem por linha , mas em situações comuns, isso deve funcionar bem. / p>