【问题标题】:How to resolve [Errno 13] Permission denied error in python如何解决python中的[Errno 13] Permission denied错误
【发布时间】:2019-07-08 02:34:52
【问题描述】:

保存文件时抛出以下错误 [Errno 13] Permission denied

我正在尝试将文件保存在当前工作目录中,但没有保存

file_data = base64.urlsafe_b64decode(i['body']['data'] .encode('UTF-8'))
store_dir = os.getcwd()
path = ''.join([store_dir, i['filename']])
f = open(path, 'w')
f.write(file_data)
f.close()

【问题讨论】:

    标签: python django gmail-api


    【解决方案1】:

    你需要使用:

    os.path.join(store_dir, i['filename'])
    

    【讨论】:

    • 您正在修复的错误不会导致[Errno 13] Permission denied
    • 你真的测试过吗?因为我做了并且得到了:TypeError: join() argument must be str or bytes, not 'list'
    • @StephenRauch 是的,我确实对其进行了测试....i['filename'] 将是字符串,然后它正在工作并创建无效路径...我使用的是 python 2.7
    • @vks 它会因为 OP 的原始连接导致路径无效 这不太正确,如果事实上,path = ''.join([store_dir, i['filename']]) 没有办法导致路径无效。
    • python 2.7?在 2019 年?不要那样做......但是,将列表传递给 Python 2.7 仍然会死掉,但会显示不同的消息。
    【解决方案2】:

    如何处理(或...避免?)[Errno 13] Permission denied?

    简单,写到你有写权限的路径。

    这个:

    path = ''.join([store_dir, i['filename']])
    

    可能会导致您没有写入权限的路径,@vks 答案是使用您的方法获得正确路径的更好方法

    os.path.join(store_dir, i['filename'])
    

    ,然而……

    如果要将文件保存在当前工作目录中...

    ...你只需要提供文件名,不需要os花哨的魔法。

    file_data = base64.urlsafe_b64decode(i['body']['data'] .encode('UTF-8'))
    f = open("filename", 'w')
    f.write(file_data)
    f.close
    

    但请注意,执行此脚本(以及您的脚本)的用户必须在该目录中具有写入权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 2019-11-27
      • 2020-12-27
      • 2017-07-15
      • 2021-08-22
      相关资源
      最近更新 更多