2017-08-09 74 views
1

我意識到這看起來像一個重複的問題,但是我已經檢查了所有可以找到的相關問題,但都沒有解決我的問題。從os.listdir獲取WinError 3或UnicodeDecodeError(路徑)

我產生在我所知道的最Python的方式我的變量myPath如何使用os.path.join
我一直在使用字符串與r'path_string',甚至使用正斜槓,而不是然而兩者也給我FileNotFoundError: [WinError 3] The system cannot find the path specified

我使用b'path_string'也試過也試着然而,這只是給了我一個不同的錯誤,所以這是沒有幫助或者:UnicodeDecodeError: 'utf-8' codec can't decode byte 0x81 in position 69: invalid start byte

所有這些錯誤都是由同一行中我的代碼生成:
files = os.listdir(path)

之前有人問我有三重檢查共享驅動器的目錄路徑,它確實存在,並有權訪問它。
也可能會出現這樣的問題,這是因爲管理員在命令提示符下運行此程序而引起的,這使管理員更加關注學術問題。

全部代碼如下,

import os 

#myPath = 'z:/Data/App_Projects/Client_Data/Client/Date' 
#myPath = b'z:/Data/App_Projects/Client_Data/Client/Date' 
myPath = os.path.join("z:", os.sep, "Data", "App_Projects", "Client_Data", "Client", "Date") 

files = os.listdir(myPath) 

回答

0

的問題似乎是一個事實,這是一個網絡驅動器來了。雖然使用提升命令提示符時正在使用的用戶是管理員,但聯網驅動器不再與該會話相關聯,因爲它僅映射到非提升會話。

這在this回答了Alberto Martinez對SuperUser的回答,但我認爲它在這裏的相關性並不是導致錯誤的明顯原因。

0

如果知道網絡路徑,仍然可以使用python訪問網絡驅動器文件。

network_path = r"\\192.168.0.1" # or \\your_network_name 
myPath = os.path.join(network_path, "Data", "App_Projects", "Client_Data", "Client", "Date") 
+0

您仍然可以訪問網絡驅動器文件,而如果你已經映射到某個驅動器盤符爲好,你的解決方案,如果它是一個不安全的網絡驅動器,除非你可以通過憑據每次訪問時間僅適用? –