两者兼而有之os.path.isfile文件(完整路径)和操作系统路径.isdir(完整路径)返回false!为什么?

2024-06-13 18:25:15 发布

您现在位置:Python中文网/ 问答频道 /正文

遍历下面提到的目录和所有子目录(Windows 8.1)以打印带有完整路径的所有文件将返回一个错误(无效目录)。 在python解释器中进行测试时,我得到以下输出:

os.path.isfile("C:\\Miele_Service\\Miele Offline-ETD\\DATA_data.mdf")

给出:

^{pr2}$

同时:

os.path.isdir("C:\\Miele_Service\\Miele Offline-ETD\\DATA_data.mdf")

给出:

^{pr2}$

在我看来,权限有问题,因为*.mdf是一个sql数据库文件。在

我需要做些什么才能通过代码获得必要的权限才能确认它确实是一个文件并将其打印出来?在


编辑:

在命令提示符下使用icacls函数检查的结果:

拒绝访问目录中的文件:

> icacls "C:\Miele_Service\Miele Offline-ETD"
C:\Miele_Service\Miele Offline-ETD 

    Everyone:(OI)(CI)(F)
    BUILTIN\Administrators:(I)(OI)(CI)(F)
    NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
    BUILTIN\Users:(I)(OI)(CI)(RX)
    NT AUTHORITY\Authenticated Users:(I)(M)
    NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)

Successfully processed 1 files; Failed processing 0 files

对于“拒绝访问的文件”错误(我必须使用与打开文章不同的文件,因为我手动更改了原始文件的权限,以确认这是一个读取访问权限问题):

> icacls "C:\Miele_Service\Miele Offline-ETD\DATA_log.ldf"
C:\Miele_Service\Miele Offline-ETD\DATA_log.ldf: Access is denied.
Successfully processed 0 files; Failed processing 1 files

在Python中,我应该使用什么模块来自动修改对文件和目录的权限?在

编辑2:

签入提升的命令提示符:

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Windows\system32>icacls "C:\Miele_Service\Miele Offline-ETD"
C:\Miele_Service\Miele Offline-ETD 

    Everyone:(OI)(CI)(F)
    BUILTIN\Administrators:(I)(OI)(CI)(F)
    NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
    BUILTIN\Users:(I)(OI)(CI)(RX)
    NT AUTHORITY\Authenticated Users:(I)(M)
    NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)

Successfully processed 1 files; Failed processing 0 files

C:\Windows\system32>icacls "C:\Miele_Service\Miele Offline-ETD\DATA_log.ldf"
C:\Miele_Service\Miele Offline-ETD\DATA_log.ldf 

    TKlucziowski\SQLServerMSSQLUser$TKlucziowski$MIELE_ETD:(F)
    OWNER RIGHTS:(F)
    BUILTIN\Administrators:(F)

Successfully processed 1 files; Failed processing 0 files

看来,拥有管理员权限的icacls能够成功地访问文件。。。在

所以请给我指出一个模块,它允许在Python中更改权限和权限。我是新手,但我知道最好的方法是暂时取消限制(并以某种方式备份它?)并在访问文件后恢复以前的权限。在

泰铢。在


Tags: 文件ci权限dataservicefilesusersoffline
2条回答

试试看

os.path.isdir("C:\\Miele_Service\\Miele\ Offline-ETD\\DATA_data.mdf")

目录名中有一个空格字符

因此,在所考虑的情况下,大多数口译员将空格字符视为结尾操作系统路径.isdir查找C:\Miele_Service\Mieledir而不是C:\Miele_Service\Miele Offline-ETD,找不到它,返回False\用于在名称/路径中包含空格字符(视为符号,无特殊含义)

您的路径错误,Python找不到您的文件。在

在路径中的空间前面添加一个\以对其进行转义。在

无论如何,这不应该是许可问题。在

相关问题 更多 >