repo sync以後,忽然停在了這個地方html
Traceback (most recent call last): File "E:\LocalProject\Oreo\.repo\repo/main.py", line 538, in <module> _Main(sys.argv[1:]) File "E:\LocalProject\Oreo\.repo\repo/main.py", line 512, in _Main result = repo._Run(argv) or 0 File "E:\LocalProject\Oreo\.repo\repo/main.py", line 185, in _Run result = cmd.Execute(copts, cargs) File "E:\LocalProject\Oreo\.repo\repo\subcmds\sync.py", line 823, in Execute project.Sync_LocalHalf(syncbuf, force_sync=opt.force_sync) File "E:\LocalProject\Oreo\.repo\repo\project.py", line 1377, in Sync_LocalHal self._CopyAndLinkFiles() File "E:\LocalProject\Oreo\.repo\repo\project.py", line 1294, in _CopyAndLinkF linkfile._Link() File "E:\LocalProject\Oreo\.repo\repo\project.py", line 299, in _Link self.__linkIt(self.src_rel_to_dest, self.abs_dest) File "E:\LocalProject\Oreo\.repo\repo\project.py", line 279, in __linkIt os.remove(absDest) WindowsError: [Error 5] : u'E:\\LocalProject\\Oreo\\build/core'
看到這個報錯我就有點尷尬了。由於這個repo的腳本是由大神改的。徹底不懂腳本啊。
修改後的腳本:python
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)
上網查了下,網上的解決方案基本就兩種:修改權限和去掉只讀屬性。windows
那麼是刪除權限不夠?用管理員
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/...ui