On m'a volé un petit script censé simplement ajouter une extension là où aucune n'existe à partir d'un fichier d'exportation. Mais quand je l'exécute, j'obtiens des résultats et le contenu réel des fichiers a donc été mis à zéro.

Pourquoi cela arrive-t-il?

import os, sys

path = 'C:/Users/jal!/Downloads/Sinopiadata/'

for file in os.listdir(path):

    if file != "complete.log" and file != "jasawn.py":
        os.chdir('C:/Users/jal!/Downloads/Sinopiadata/')
        file = (file)
        filename = file + ".json"
        filename = open(filename,'w')
-1
jyssyl 4 juin 2020 à 20:53

3 réponses

Meilleure réponse

Vous n'avez rien mis dans le nouveau fichier. Si vous souhaitez copier du fichier sans l'extension vers le fichier avec l'extension, vous devez lire et écrire.

for file in os.listdir(path):

    if file != "complete.log" and file != "jasawn.py":
        os.chdir('C:/Users/jal!/Downloads/Sinopiadata/')
        file = (file)
        filename = file + ".json"
        with open(filename,'w') as newfile, open(file, 'r') as oldfile:
            newfile.write(oldfile.read())

Vous pouvez également utiliser shutil.copyfile()

0
Barmar 4 juin 2020 à 18:01

Il y a toujours la méthode de changement de nom que vous pouvez (ou devriez, comme mentionné dans les commentaires) utiliser:

import os

os.rename(file, file_with_extension)
3
Ann Zen 4 juin 2020 à 17:58
filename = open(filename,'w')

Ouvre le fichier pour l'écriture en mode troncature, c'est pourquoi il est vidé. Il ne sert à rien d'avoir cette ligne là du tout si vous ne renommez que des choses. Vous devez simplement utiliser os.rename(old_path, new_path).

0
AKX 4 juin 2020 à 17:59