2017-10-16 7 views
2

J'ai un problème avec mon codetélécharger python et renommer

Le but de ce code est de télécharger un fichier csv (qui a appelé History.csv) et renommer ce fichier au nom d'origine que j'utilise le sélénium pour aller chercher hors de la page Web. le premier problème ici est la lenteur du sélénium lors du chargement de la page Web. le deuxième problème est le code arrêté après le téléchargement et le changement de nom des 2 ou 3 premiers liens de la liste des liens.

voici la liste des événements

https://drive.google.com/file/d/0B5bJvxM9TZkhYXZOSnRDVnhTbFk/view?usp=sharing

from selenium import webdriver 
import os 
events = open('events.txt', 'r') 
for event in events: 
    driver = webdriver.Chrome() 
    driver.get(event) 
    download = driver.find_element_by_xpath('//*[@id="fxec_historytable"]/a').click() 

    lname = driver.find_element_by_xpath('//*[@id="fxit-h1title"]') 
    lname = lname.text 
    lname = lname.replace('\n', '') 
    name = str(lname) 
    print(name) 

    path = "C:\\Users\\Sayed\\Downloads" 
    os.chdir(path) 
    print(os.getcwd()) 
    for file in os.listdir(path): 
     fileName, fileExt = os.path.splitext(file) 
     nname = '{}{}'.format(name, fileExt) 
     os.rename(file, nname) 

une erreur est

C: \ Users \ Sayed \ Anaconda3 \ python.exe C:/Users/Sayed/PycharmProjects/Tutoriel/us.py Sentiment de services - Union monétaire européenne C: \ Users \ Sayed \ Downloads Enquête ZEW - Sentiment économique - Union monétaire européenne C: \ Users \ Sayed \ Downloads Traceback (dernier appel en dernier): Fichier "C: /Users/Sayed/PycharmProjects/Tutorial/us.py", ligne 21, en os.rename (fichier, nname) FileExistsError: [WinError 183] Impossible de créer un fichier lorsque ce fichier existe déjà: « services -Européens monétaire Union.csv Sentiment » -> « ZEW enquête - climat économique -Européens monétaire Union.csv »

+0

Ajouter une vérification qu'il n'y a pas de fichier déjà présent avec le nom –

+0

ou le meilleur serait supprimer si un fichier est là avec ce nom premier –

+0

le dossier est vide –

Répondre

0

Eh bien l'erreur est appelée par Python:

Cannot create a file when that file already

exists:

Je ne suis pas un utilisateur de Windows, mais par la docs, vous pouvez essayer replace() au lieu de rename(). Cela devrait le faire/remplacer le fichier en silence.

+0

Traceback (appel le plus récent en dernier): Fichier "C: /Users/Sayed/PycharmProjects/Tutorial/us.py", ligne 19, en os.replace (filename, name) PermissionError: [WinError 5] L'accès est refusé: 'C: \\ Users \\ Sayed \\ Downloads' -> 'Indice des prix à la consommation -Romania' –

0

Je cherchai votre erreur et trouvé ce vieux message:

WindowsError: [Error 183] Cannot create a file when that file already exists

On dirait que vous avez une boucle pour renommer tous les fichiers dans le dossier « C: \ Users \ Sayed \ Downloads » à un même ' nom ', est-ce exact? S'il y a plusieurs fichiers, il y aura certainement des doublons ou des conflits de noms.

+0

Le nom est variable pas une chaîne –

0

Vous essayez de renommer tous les fichiers à la même chose que la valeur de name ne change pas dans votre boucle.

+0

La chose dont tout le monde parle est le nom valeur qui est une variable.l'idée derrière elle pour le renommer automatiquement. Quel que soit le nom d'origine ou le prénom. –

+0

nom est une variable, oui, mais elle n'est pas définie dans la boucle. Par conséquent, si dans la première itération, sa valeur est "myfile.txt", elle aura toujours cette valeur dans l'itération suivante, et la suivante, et la suivante ... et ainsi de suite. –