2017-09-21 1 views
1

J'ai un script Python 3 test.py où certaines données sont créées que je veux enregistrer dans un fichier avec un nom défini par l'utilisateur, disons data.csv. Le dossier dans lequel ce script est placé contient un dossier /Results. Ce que je veux faire est de créer un sous-dossier à l'intérieur Results avec le nom du script en cours et stocker mon fichier à l'intérieur. Donc, ce que je veux, c'est que mon fichier soit stocké dans ./Results/test/data.csv. Je veux que ces dossiers soient créés s'ils n'existent pas auparavant et s'ils existent, avec le fichier, je veux que data.csv soit remplacé. Je veux que cela fonctionne sur n'importe quel système d'exploitation. Comment cela devrait-il être fait "pythoniquement"?Comment enregistrer un fichier dans un dossier avec le nom du fichier de script Python actuel?

~/ 
    test.py 
    Results/ 
    test/ 
     data.csv 

est ici un code de test où data.csv n'est pas sauvé où je veux. Comment dois-je l'éditer?

import pandas as pd 

filename = "data.csv" 
df = pd.DataFrame([1,2,3]) 
df.to_csv(filename) 

Répondre

0

Vous pouvez utiliser le module os.path pour effectuer une série de vérifications de dossiers et créer le dossier s'il n'existe pas. Et puis vous pouvez accéder au nom de fichier actuel en utilisant l'attribut __file__.

import os.path 
import pandas as pd 

file_name = os.path.splitext(os.path.basename(os.path.realpath(__file__)))[0] 

full_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "Results") 

if not os.path.exists(full_path): 
    os.mkdir(full_path) 

    if not os.path.exists(os.path.join(full_path, file_name)): 
     os.mkdir(os.path.join(full_path, file_name)) 

file_location = os.path.join(full_path, file_name, 'data.csv') 

df = pd.DataFrame([1, 2, 3]) 
df.to_csv(file_location) 
0

J'utiliser:

import platform 
import os 

if platform.system().lower() == 'windows': 
    print("%s" % os.path.expandvars("%USERPROFILE%")) 
elif platform.system().lower() == 'posix': 
    print("%s" % os.path.expandvars("$PATH")) #or some other posix var like USER... 
else: 
    print("What the heck type of os is this?!?") 

Je pense que this peut également être utile pour vous.

+0

Je ne pouvais pas le faire fonctionner. Pouvez-vous vérifier le code ajouté dans ma question et me montrer comment cela est fait? – Bella

+0

Désolé à ce sujet, utilisait sur un ordinateur de l'école, donc je ne pouvais pas le tester. Je vais le tester maintenant. – chevydog