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