2017-07-28 21 views
1

私のPythonスクリプトは、次のスクリプトでLinuxサーバ上で相対パスを解決することはできません。相対パス

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')) 

エラー:しかし、私は同じようにそれを行う際に

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

これは動作し、スクリプトのパスにファイルを保存します。

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

マイフォルダとファイルの構造は次のようになります。

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

はどのようにして、フォルダのファイルキャッシュにファイルを保存することができますか?上記で使用したモジュール、定数や関数をありがとう

+0

は、文字列として現在のパスを見つけ、そこにサブ・パスを追加してみてください? – pointerless

+0

相対パスを使用すると、どのようなエラーが発生しますか? – AlG

+0

'static'と' static/filecache'の権限は正しいですか? –

答えて

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

ドキュメントの参照:

  • osos.pathモジュール。
  • __file__定数
  • os.path.realpath(path)(「パスの中のシンボリックリンクを取り除いて、指定したファイル名の正規のパスを」をを返す)
  • os.path.dirname(path)「パス名pathのディレクトリ名」を返します)
  • os.getcwd() "現在の作業ディレクトリを表す文字列を" を返す)
  • os.chdir(path)pathに現在の作業ディレクトリを変更」)
+0

ありがとうございます。残念ながら私は同じエラーが発生します。 [Errno 2]そのようなファイルやディレクトリはありません: '/home/vcap/app/static/filecache/file.csv.D3e3D7aF' – user3080315

+0

あなたの質問に情報とコードを記入してください。 –