我意识到这看起来像是一个重复的问题,但是我已经检查了所有可以找到的问题,这些问题看似相关,而且没有解决我的问题。
我以最蟒蛇的方式生成变量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 :(得分:0)
问题似乎来自于这是一个网络驱动器。虽然在使用提升的命令提示符时使用的用户是管理员,但网络驱动器不再与该会话关联,因为它仅映射到非提升的会话。
这是由Alberto Martinez在SuperUser上的this回答中解释的,但我认为这与其相关并不一定是导致错误的明显原因。
答案 1 :(得分:0)
如果您知道网络路径,仍然可以使用python访问网络驱动器文件。
SELECT ROW_NUMBER() OVER (ORDER BY SUM(Quantity) DESC,
SUM(LineTotalInDefaultCurrency) DESC
) AS row,
RANK() OVER (ORDER BY SUM(Quantity) DESC,
SUM(LineTotalInDefaultCurrency) DESC
) AS SalesRank,
p.Name, SUM(Quantity) as UnitsSold ,
SUM(LineTotalInDefaultCurrency) as RevenueDefaultCurrency,
sf.ProductId,
FROM SalesFact sf INNER JOIN
Product p
ON sf.ProductId = p.ProductId
WHERE Dttm >= '2014-08-08' AND Dttm <= '2017-08-09'
GROUP BY sf.ProductId, p.Name
ORDER BY [row];