【问题标题】:Python denied write access but I have manual access, what could cause this?Python拒绝写访问,但我有手动访问权限,这可能是什么原因?
【发布时间】:2017-08-26 05:02:33
【问题描述】:

我已验证 Py 正在以同一用户身份运行。我在本地运行并写入共享,但主目录(Py 的运行位置)无关紧要。无论目标文件 (pull.zip) 是否存在,都会出现相同的错误。不应该为此而提高。 Py 2 或 3 中的结果相同。

import requests, io

url = "https://someplace/stuff.zip"
loc = "\\domain\share\pull.zip"

r = requests.get(url)
print (r.status_code)
with open(loc, 'w+b') as code:
    code.write(r.content)

返回:

PermissionError: [Errno 13] Permission denied: 
'\\domain\\share\\pull.zip'

(路径已匿名)

Efective Permissions 在目标文件夹中。

【问题讨论】:

  • 你需要转义那些反斜杠。如果路径是\\foobar,你的字符串应该是\\\\foobar,因为“\\”转义为“\”。
  • 啊!当然。谢谢!

标签: python windows python-3.x


【解决方案1】:

\\ 是一个 escape sequence,被解释为单个反斜杠。

您可以使用四个反斜杠来表示其中两个(但如果文字包含另一个转义序列,这将失败)

loc = "\\\\domain\share\pull.zip"

或原始文字

loc = r"\\domain\share\pull.zip"

【讨论】:

    【解决方案2】:

    如果您的“pull.zip”是本地的(“pull.zip”位于文件夹“share”中,该文件夹位于您的 python 文件当前目录中的文件夹“domain”中),那么您应该从中删除 \\字符串 loc 的开头和所有其他斜杠的两倍。所以你的代码应该是这样的:

    import requests, io
    
    url = "https://someplace/stuff.zip"
    loc = "domain\\share\\pull.zip"
    
    r = requests.get(url)
    print (r.status_code)
    with open(loc, 'w+b') as code:
        code.write(r.content)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      • 2016-03-16
      • 2017-02-15
      • 2014-06-03
      相关资源
      最近更新 更多