【问题标题】:Relative path not working in Python相对路径在 Python 中不起作用
【发布时间】:2017-07-28 12:31:47
【问题描述】:

我的 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

如何将文件保存到文件夹 filecache?谢谢

【问题讨论】:

  • 尝试将当前路径作为字符串查找并添加子路径?
  • 使用相对路径会出现什么错误?
  • staticstatic/filecache 的权限是否正确?
  • 它只是说没有该路径的目录。权限正确。
  • 当前工作目录不是你的脚本所在的目录,当你的代码被执行时,它甚至可能不是你启动脚本的那个目录(如果在你之前执行的任何其他代码发出chgdir())。从不依赖 cwd,从不使用相对路径,始终确保使用绝对路径。

标签: python linux relative-path boto3


【解决方案1】:
conn.download_file('mytestbucket22', 'file.csv', os.path.join(os.getcwd(), 'static', 'filecache', 'file.csv'))

上面使用的模块、常量和函数的文档参考:

【讨论】:

  • 谢谢。不幸的是我得到了同样的错误。 [Errno 2] 没有这样的文件或目录:'/home/vcap/app/static/filecache/file.csv.D3e3D7aF'
  • 能否请您完成问题中的信息和代码?
【解决方案2】:

我会用

conn.download_file('mytestbucket22', 'file.csv', os.path.join(os.path.dirname(sys.argv[0]), 'static', 'filecache', 'file.csv'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-12
    • 2013-10-22
    • 2013-02-19
    • 2015-08-30
    • 2011-03-17
    • 2014-06-25
    • 2018-09-15
    • 1970-01-01
    相关资源
    最近更新 更多