从os.listdir获取WinError 3或UnicodeDecodeError(路径)

问题描述:

我意识到这看起来像一个重复的问题,但是我已经检查了所有可以找到的相关问题,但都没有解决我的问题。从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) 

的问题似乎是一个事实,这是一个网络驱动器来了。虽然使用提升命令提示符时正在使用的用户是管理员,但联网驱动器不再与该会话相关联,因为它仅映射到非提升会话。

这在this回答了Alberto Martinez对SuperUser的回答,但我认为它在这里的相关性并不是导致错误的明显原因。

如果知道网络路径,仍然可以使用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

您仍然可以访问网络驱动器文件,而如果你已经映射到某个驱动器盘符为好,你的解决方案,如果它是一个不安全的网络驱动器,除非你可以通过凭据每次访问时间仅适用? –