2017-07-28 8 views
1

script Python Ma ne peut pas résoudre le chemin relatif sur un serveur Linux dans le script suivant:Chemin relatif ne fonctionne pas en Python

import boto3 
import os 

conn = boto3.client('s3', region_name="eu-west-1", endpoint_url="https://example.com", config=Config(signature_version="s3", s3={'addressing_style': 'path'})) 
conn.download_file('mytestbucket22', 'file.csv', os.path.join(os.getcwd(), 'static', 'filecache', 'file.csv')) 

Erreur:

[Errno 2] No such file or directory: '/home/vcap/app/static/filecache/file.csv.D3e3D7aF' 

Cependant quand je le fais comme cela fonctionne et il enregistre le fichier sur le chemin de mon script.

conn.download_file('mytestbucket22', 'file.csv', 'file.csv') 

Mon dossier et la structure des fichiers ressemble à ceci:

--script.py 
--static 
----filecache 

Comment puis-je enregistrer le fichier dans le dossier filecache? Merci

+0

Essayez de trouver le chemin actuel comme une chaîne et en ajoutant le chemin secondaire pour elle? – pointerless

+0

Quelle erreur obtenez-vous lorsque vous utilisez le chemin relatif? – AlG

+0

Les permissions pour 'static' et' static/filecache' sont-elles correctes? –

Répondre

4
conn.download_file('mytestbucket22', 'file.csv', os.path.join(os.getcwd(), 'static', 'filecache', 'file.csv')) 

références de documentation pour les modules, les constantes et les fonctions utilisées ci-dessus:

  • Les modules os et os.path.
  • Les __file__ constants
  • os.path.realpath(path) (retours « le chemin canonique du nom de fichier spécifié, ce qui élimine tous les liens symboliques rencontrés dans le chemin »)
  • os.path.dirname(path) (retourne « le nom du répertoire du chemin path »)
  • os.getcwd() (retourne "une chaîne représentant le répertoire courant")
  • os.chdir(path) (« changer le répertoire de travail courant path »)
+0

Merci. Malheureusement, j'ai la même erreur. [Errno 2] Aucun fichier ou répertoire: '/home/vcap/app/static/filecache/file.csv.D3e3D7aF' – user3080315

+0

pouvez-vous s'il vous plaît compléter les informations et le code dans votre question? –