1
votes

Impossible de placer différents fichiers texte créant différents sous-dossiers dans un dossier principal

J'ai écrit un script en python pour extraire les cinq premiers titres de différents articles d'une page Web, puis écrire les titres dans des fichiers texte individuels et les mettre dans cinq sous-dossiers différents dans un dossier de bureau DataStorage .

Actuellement, mon script suivant peut analyser les titres de cinq articles et les écrire dans cinq fichiers texte différents et les placer dans un dossier de bureau DataStorage.

Comment puis-je créer cinq sous-dossiers différents dans un dossier principal et y placer les fichiers texte concernant les sous-dossiers?

Voici ma tentative jusqu'à présent:

< pré> XXX


0 commentaires

3 Réponses :


0
votes

ne jamais utiliser os.chdir si vous pouvez l'éviter, ce qui est: la plupart du temps / toujours .

Plus vous empêche de comprendre la logique des chemins de fichiers hors du répertoire courant.

Préférez utiliser le chemin absolu sur les fichiers que vous lisez / écrivez.

Alors supprimez

subdir = os.path.join(dirf,item)
if os.path.exists(subdir):
    os.mkdir(subdir)   # create first time
with open(os.path.join(subdir,filename+'.txt'),'w', encoding='utf-8') as f:
   f.write(item.text)

modifiez maintenant ceci:

with open(filename+'.txt','w', encoding='utf-8') as filename:

par

os.chdir(dirf)

élément est le chemin relatif de votre sous-répertoire (il doit se conformer aux règles actuelles du système de fichiers, ce qui n'est pas garanti à 100% car il provient d'un fichier html). Notez également que vous ne devez pas réutiliser filename pour le handle de fichier. J'utilise généralement f ou filehandle


0 commentaires

1
votes

Ce qui suit pourrait fonctionner

import os
import requests
from bs4 import BeautifulSoup

url = "https://stackoverflow.com/questions/tagged/web-scraping"

dirf = r"C:\Users\WCS\Desktop\DataStorage"  # The main folder in desktop
if not os.path.exists(dirf):
    os.makedirs(dirf)
os.chdir(dirf)

res = requests.get(url)
soup = BeautifulSoup(res.text, "lxml")
for item in soup.select(".summary .question-hyperlink")[:5]:
    filename = item.text.split(" ")[0]
    curr_dir = os.path.join(dirf, filename)
    os.makedirs(curr_dir)
    filepath = os.path.join(curr_dir, filename+'.txt')
    with open(filepath, 'w', encoding='utf-8') as f:
        f.write(item.text)


0 commentaires

0
votes

Pour créer un répertoire, vous pouvez utiliser os.mkdir (PATH) . Pour créer le fichier, vous pouvez ouvrir le fichier avec l'autorisation w + qui créera le fichier s'il n'existe pas et réécrira également le fichier s'il existe.


0 commentaires