资讯专栏INFORMATION COLUMN

repo下载Android源码时报 python windowserror 5

娣辩孩 / 3354人阅读

摘要:已到达网络命令限制。发生意外的网络错误。远程服务器已暂停,或正在启动过程中。本地设备名已在使用中。此信号灯的前一个所有权已结束。系统试图解除未合并驱动器的。指定的扩展属性名无效。仅完成部分的或请求。操作锁定请求被拒绝。

WindowsError: [Error 5]

repo sync之后,突然停在了这个地方

Traceback (most recent call last):
  File "E:LocalProjectOreo.repo
epo/main.py", line 538, in 
    _Main(sys.argv[1:])
  File "E:LocalProjectOreo.repo
epo/main.py", line 512, in _Main
    result = repo._Run(argv) or 0
  File "E:LocalProjectOreo.repo
epo/main.py", line 185, in _Run
    result = cmd.Execute(copts, cargs)
  File "E:LocalProjectOreo.repo
eposubcmdssync.py", line 823, in Execute
    project.Sync_LocalHalf(syncbuf, force_sync=opt.force_sync)
  File "E:LocalProjectOreo.repo
epoproject.py", line 1377, in Sync_LocalHal
    self._CopyAndLinkFiles()
  File "E:LocalProjectOreo.repo
epoproject.py", line 1294, in _CopyAndLinkF
    linkfile._Link()
  File "E:LocalProjectOreo.repo
epoproject.py", line 299, in _Link
    self.__linkIt(self.src_rel_to_dest, self.abs_dest)
  File "E:LocalProjectOreo.repo
epoproject.py", line 279, in __linkIt
    os.remove(absDest)
WindowsError: [Error 5] : u"E:LocalProjectOreouild/core"

看到这个报错我就有点尴尬了。因为这个repo的脚本是由大神改的。完全不懂脚本啊。
修改后的脚本:

  def __linkIt(self, relSrc, absDest):
    # link file if it does not exist or is out of date
    # if not os.path.islink(absDest) or (os.readlink(absDest) != relSrc):
    if not portable.os_path_islink(absDest) or (portable.os_path_realpath(absDest) != relSrc):
      try:
        # remove existing file first, since it might be read-only
        if os.path.lexists(absDest):
          os.remove(absDest)

        else:
          dest_dir = os.path.dirname(absDest)
          if not os.path.isdir(dest_dir):
            os.makedirs(dest_dir)
        # os.symlink(relSrc, absDest)
        portable.os_symlink(relSrc, absDest)
      except IOError:
        _error("Cannot link file %s to %s", relSrc, absDest)

上网查了下,网上的解决方案基本就两种:修改权限和去掉只读属性。

那么是删除权限不够?用管理员
import os
import stat
os.chmod( filename, stat.S_IWRITE )

试了下并不管用。看了下python的sdk文档,发现原因很简单,os.remove(path)是用来删除文件的。但是报错的地方是删除文件夹的快捷方式。看来文件夹的快捷方式不属于文件。删除文件夹要用os.removedirs(path),那做个简单的判断就好了。

  def __linkIt(self, relSrc, absDest):
    # link file if it does not exist or is out of date
    # if not os.path.islink(absDest) or (os.readlink(absDest) != relSrc):
    if not portable.os_path_islink(absDest) or (portable.os_path_realpath(absDest) != relSrc):
      try:
        # remove existing file first, since it might be read-only
        if os.path.lexists(absDest):
            if os.path.isfile(absDest):
                os.remove(absDest)
            else:
                os.removedirs(absDest)
        else:
          dest_dir = os.path.dirname(absDest)
          if not os.path.isdir(dest_dir):
            os.makedirs(dest_dir)
        # os.symlink(relSrc, absDest)
        portable.os_symlink(relSrc, absDest)
      except IOError:
        _error("Cannot link file %s to %s", relSrc, absDest)

拓展阅读

附上 windows error错误代码:

0操作成功完成。
1功能错误。
2系统找不到指定的文件。
3系统找不到指定的路径。
4系统无法打开文件。
5拒绝访问。
6句柄无效。
7存储控制块被损坏。
8存储空间不足,无法处理此命令。
9存储控制块地址无效。
10环境错误。
11试图加载格式错误的程序。
12访问码无效。
13数据无效。
14存储器不足,无法完成此操作。
15系统找不到指定的驱动器。
16无法删除目录。
17系统无法将文件移到不同的驱动器。
18没有更多文件。
19介质受写入保护。
20系统找不到指定的设备。
21设备未就绪。
22设备不识别此命令。
23数据错误(循环冗余检查)。
24程序发出命令,但命令长度不正确。
25驱动器无法找出磁盘上特定区域或磁道的位置。
26无法访问指定的磁盘或软盘。
27驱动器找不到请求的扇区。
28打印机缺纸。
29系统无法写入指定的设备。
30系统无法从指定的设备上读取。
31连到系统上的设备没有发挥作用。
32进程无法访问文件,因为另一个程序正在使用此文件。
33进程无法访问文件,因为另一个程序已锁定文件的一部分。
36用来共享的打开文件过多。
38到达文件结尾。
39磁盘已满。
50不支持网络请求。
51远程计算机不可用。
52在网络上已有重复的名称。
53找不到网络路径。
54网络忙。
55指定的网络资源或设备不再可用。
56已到达网络BIOS命令限制。
57网络适配器硬件出错。
58指定的服务器无法运行请求的操作。
59发生意外的网络错误。
60远程适配器不兼容。
61打印机队列已满。
62无法在服务器上获得用于保存待打印文件的空间。
63删除等候打印的文件。
64指定的网络名不再可用。
65拒绝网络访问。
66网络资源类型错误。
67找不到网络名。
68超过本地计算机网卡的名称限制。
69超出网络BIOS会话限制。
70远程服务器已暂停,或正在启动过程中。
71当前已无法再同此远程计算机连接,因为已达到计算机的连接数目极限。
72已暂停指定的打印机或磁盘设备。
80文件存在。
82无法创建目录或文件。
83INT24失败。
84无法取得处理此请求的存储空间。
85本地设备名已在使用中。
86指定的网络密码错误。
87参数错误。
88网络上发生写入错误。
89系统无法在此时启动另一个进程。
100无法创建另一个系统信号灯。
101另一个进程拥有独占的信号灯。
102已设置信号灯且无法关闭。
103无法再设置信号灯。
104无法在中断时请求独占的信号灯。
105此信号灯的前一个所有权已结束。
107程序停止,因为替代的软盘未插入。
108磁盘在使用中,或被另一个进程锁定。
109管道已结束。
110系统无法打开指定的设备或文件。
111文件名太长。
112磁盘空间不足。
113无法再获得内部文件的标识。
114目标内部文件的标识不正确。
117应用程序制作的IOCTL调用错误。
118验证写入的切换参数值错误。
119系统不支持请求的命令。
120此功能只被此系统支持。
121信号灯超时时间已到。
122传递到系统调用的数据区太小。
123文件名、目录名或卷标语法不正确。
124系统调用级别错误。
125磁盘没有卷标。
126找不到指定的模块。
127找不到指定的程序。
128没有等候的子进程。
130试图使用操作(而非原始磁盘I/O)的已打开磁盘分区的文件句柄。
131试图移动文件指针到文件开头之前。
132无法在指定的设备或文件上设置文件指针。
133包含先前加入驱动器的驱动器无法使用JOIN或SUBST命令。
134试图在已被合并的驱动器上使用JOIN或SUBST命令。
135试图在已被合并的驱动器上使用JOIN或SUBST命令。
136系统试图解除未合并驱动器的JOIN。
137系统试图解除未替代驱动器的SUBST。
138系统试图将驱动器合并到合并驱动器上的目录。
139系统试图将驱动器替代为替代驱动器上的目录。
140系统试图将驱动器合并到替代驱动器上的目录。
141系统试图替代驱动器为合并驱动器上的目录。
142系统无法在此时运行JOIN或SUBST。
143系统无法将驱动器合并到或替代为相同驱动器上的目录。
144目录并非根目录下的子目录。
145目录非空。
146指定的路径已在替代中使用。
147资源不足,无法处理此命令。
148指定的路径无法在此时使用。
149企图将驱动器合并或替代为驱动器上目录是上一个替代的目标的驱动器。
150系统跟踪信息未在CONFIG.SYS文件中指定,或不允许跟踪。
151为DosMuxSemWait指定的信号灯事件个数错误。
152DosMuxSemWait不可运行。已设置过多的信号灯。
153DosMuxSemWait清单错误。
154输入的卷标超过目标文件系统的长度限制155无法创建另一个线程。
156接收进程已拒绝此信号。
157段已被放弃且无法锁定。
158段已解除锁定。
159线程标识的地址错误。
160传递到DosExecPgm的参数字符串错误。
161指定的路径无效。
162信号已暂停。
164无法在系统中创建更多的线程。
167无法锁定文件区域。
170请求的资源在使用中。
173对于提供取消区域进行锁定的请求不明显。
174文件系统不支持锁定类型的最小单元更改。
180系统检测出错误的段号。
183当文件已存在时,无法创建该文件。
186传递的标志错误。
187找不到指定的系统信号灯名称。
196操作系统无法运行此应用程序。
197操作系统当前的配置不能运行此应用程序。
199操作系统无法运行此应用程序。
200代码段不可大于或等于64K。
203操作系统找不到已输入的环境选项。
205命令子树中的进程没有信号处理程序。
206文件名或扩展名太长。
207第2环堆栈已被占用。
208没有正确输入文件名通配符*或?,或指定过多的文件名通配符。
209正在发送的信号错误。
210无法设置信号处理程序。
212段已锁定且无法重新分配。
214连到该程序或动态链接模块的动态链接模块太多。
215无法嵌套调用LoadModule。
230管道状态无效。
231所有的管道实例都在使用中。
232管道正在关闭中。
233管道的另一端上无任何进程。
234更多数据可用。
240取消会话。
254指定的扩展属性名无效。
255扩展属性不一致。
258等待的操作过时。
259没有可用的数据了。
266无法使用复制功能。
267目录名无效。
275扩展属性在缓冲区中不适用。
276装在文件系统上的扩展属性文件已损坏。
277扩展属性表格文件已满。
278指定的扩展属性句柄无效。
282装入的文件系统不支持扩展属性。
288企图释放并非呼叫方所拥有的多用户终端运行程序。
298发向信号灯的请求过多。
299仅完成部分的ReadProcessMemoty或WriteProcessMemory请求。
300操作锁定请求被拒绝。
301系统接收了一个无效的操作锁定确认。
487试图访问无效的地址。
534算术结果超过32位。
535管道的另一端有一进程。
536等候打开管道另一端的进程。
994拒绝访问扩展属性。
995由于线程退出或应用程序请求,已放弃I/O操作。
996重叠I/O事件不在信号状态中。
997重叠I/O操作在进行中。
998内存分配访问无效。
999错误运行页内操作。

参考链接

python windows错误代码 5 https://blog.csdn.net/thesnow...
Python 删除操作出现WindowsError: [Error 5] 解决方案 https://www.waitig.com/python...
Python OS 文件/目录方法 http://www.runoob.com/python/...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41867.html

相关文章

  • repo下载Android源码时报 python windowserror 5

    摘要:已到达网络命令限制。发生意外的网络错误。远程服务器已暂停,或正在启动过程中。本地设备名已在使用中。此信号灯的前一个所有权已结束。系统试图解除未合并驱动器的。指定的扩展属性名无效。仅完成部分的或请求。操作锁定请求被拒绝。 WindowsError: [Error 5] repo sync之后,突然停在了这个地方 Traceback (most recent call last): F...

    jsummer 评论0 收藏0
  • AOSP 源码下载

    摘要:同步代码同步源码树以后只需执行这条命令来同步然后等待下载完毕正在检出文件完成正在检出文件完成在检出文件正在检出文件完成正在检出文件正在检出文件完成检出文件正在检出文件完成正在检出文件最后整个源码大小。 网上关于这块大部分教程都是无效的,因为墙的缘故,无法使用官方提供的下载链接,我这里使用了清华大学的镜像,是能够顺利将 AOSP 下载下来。如果你还没有安装 Ubuntu,请看《Virtu...

    loonggg 评论0 收藏0
  • Android源码下载+编译+调试框架层代码

    摘要:源码下载概要是为了方便管理多个库而开发的脚本。源码包含数百个库,仅仅是下载这么多库就是一项繁重的任务,所以在下载源码时,就引入了。并不会直接将改动合并后远程的库,而是需要先得到批准。查看改动内容决定是否批准合入代码的操作,都是通过完成。 源码下载 概要 repo是Android为了方便管理多个git库而开发的Python脚本。repo的出现,并非为了取代git,而是为了让Android...

    mo0n1andin 评论0 收藏0
  • 国内同步 CyanogenMod 源码

    摘要:根据稍作修改安装依赖设置用户名和邮箱创建相关目录下载工具下面这句话国内是不能执行的替代方案加执行权限把上面的目录添加到环境变量,编辑文件追加一下内容初始化源码仓库只拉取分支这一步需要走科学 根据 cm wiki 稍作修改 安装依赖 apt-get install bc bison build-essential curl flex git gnupg gperf libesd0-dev...

    guyan0319 评论0 收藏0
  • 「Do.016」AndroidStudio不用编译,阅读Android源码

    摘要:不过在尝试了很多次之后,我也完美的搭好了阅读源码的环境。下面我就告诉大家如何做到不用编译就能导入阅读源码。当然你也可以不同步直接使用来检出里面的源码项目。那么在这里之所以不用编译,不是真的无需编译。 showImg(https://segmentfault.com/img/remote/1460000016830248); 首发公众号:Android程序员日记作者:贤榆的榆如果你觉得有...

    flyer_dev 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<