1
votes

comment écrire un fichier csv dans un dossier spécifique

J'essaye d'écrire plusieurs fichiers .csv dans un répertoire spécifique

voici mon code

with open(f+'.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)

    writer.writerow(["index", "B", "G", "R"])

    for row in rows:
        writer.writerow(row)

    writer.writerow(["Mean", mean_b/total_b, mean_g/total_g, mean_r/total_r])
    writer.writerow("STD", np.sqrt(var_b/total_b), np.sqrt(var_g/total_g), np.sqrt(var_r/total_r))

j'ai créé le fichier csv dans le répertoire qui est le même comme fichier .py cependant je voudrais créer un répertoire et y créer mon fichier csv

je sais que j'ai besoin de la fonction os.makedirs ()

mais je ne sais pas si j'ai pour créer d'abord le répertoire et désigner le chemin du fichier csv ou je mets simplement le nom du répertoire dans la fonction open ()

s'il vous plaît aidez-moi


5 commentaires

Veuillez publier votre code sous forme de texte et non sous forme d'image.


Avant de commencer à parcourir les fichiers, assurez-vous que le dossier existe. Si ce n'est pas le cas, créez-le. Vous pouvez utiliser 'os.path.isdir ("/ the_folder_name")'


J'ai pris la liberté d'échanger votre image contre du texte / code réel. J'espère avoir toutes les nuances et l'orthographe correctement. Corrigez le bloc si quelque chose ne va pas.


Double possible de Dire à Python d'enregistrer un fichier .txt dans un certain répertoire sous Windows et Mac


merci pour la correction, je suis nouveau en python et en anglais


3 Réponses :


0
votes

Je créerais simplement le répertoire et sauf erreur de répertoire existe

try:
   os.mkdir("./CSV")
except OSError as e:
   print("Directory exists")

with open("./CSV/" + f + ".csv", newline="") as csvfile:
   [...]


1 commentaires

oh, je change de "" en "" et cela fonctionne bien que je ne connaisse pas la raison. merci d'avoir résolu le problème



0
votes

Vous pouvez ajouter une vérification pour le répertoire comme celle-ci juste avant l'instruction open

dir_path = 'folder_to_save_csv_file_in'
if not os.path.isdir(dir_path):
    os.makedirs(dir_path)

with open('{file_path}.csv'.format(file_path=os.path.join(dir_path, file_name), 'w+') as csv_file:
    ....


0 commentaires

1
votes

Au lieu d'utiliser os, je recommande d'utiliser le module pathlib. Vous pouvez créer un répertoire avec:

fpath = (path / 'filename').with_suffix('.csv')
with fpath.open(mode='w+') as csvfile:
    # your csv writer code

pour créer le répertoire et tous ses répertoires parents manquants. Après cela, vous pouvez créer un fichier dans le nouveau répertoire avec

path = Path('path/to/dir')
path.mkdir(parents=True)


0 commentaires