web-dev-qa-db-fra.com

Modifiez et créez un fichier HTML en utilisant Python

Je suis vraiment nouveau sur Python. Je travaille actuellement sur une mission pour créer un fichier HTML en utilisant python. Je comprends comment lire un fichier HTML dans python puis le modifier et l'enregistrer.

table_file = open('abhi.html', 'w')
table_file.write('<!DOCTYPE html><html><body>')
table_file.close()

Le problème avec la pièce ci-dessus est simplement de remplacer le fichier HTML entier et de mettre la chaîne à l'intérieur de write (). Comment puis-je modifier le fichier et en même temps garder son contenu intact. Je veux dire, écrire quelque chose comme ça, mais à l'intérieur de balises de corps

<link rel="icon" type="image/png" href="img/tor.png">

J'ai besoin du lien pour passer automatiquement entre les balises d'ouverture et de fermeture du corps.

12
Lilly123

Vous voulez probablement lire sur BeautifulSoup :

import bs4

# load the file
with open("existing_file.html") as inf:
    txt = inf.read()
    soup = bs4.BeautifulSoup(txt)

# create new link
new_link = soup.new_tag("link", rel="icon", type="image/png", href="img/tor.png")
# insert it into the document
soup.head.append(new_link)

# save the file again
with open("existing_file.html", "w") as outf:
    outf.write(str(soup))

Étant donné un fichier comme

<html>
<head>
  <title>Test</title>
</head>
<body>
  <p>What's up, Doc?</p>
</body>
</html>  

cela produit

<html>
<head>
<title>Test</title>
<link href="img/tor.png" rel="icon" type="image/png"/></head>
<body>
<p>What's up, Doc?</p>
</body>
</html> 

(note: il a grignoté l'espace blanc, mais a obtenu la structure html correcte).

18
Hugh Bothwell

Vous utilisez le mode d'écriture (w) qui effacera le fichier existant ( https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files ). Utilisez plutôt le mode append (a):

table_file = open('abhi.html', 'a')
0
Selcuk