以dot开头的Windows文件引发PermissionError?

问题描述 投票:2回答:2

我有一个程序(用Python3.6编写,使用cx_Freeze转换为Windows的.exe)使用锁文件来标记当前是否正在使用用户登录,以允许在多台计算机上使用相同的登录同时避免可能的数据库损坏。

确认用户登录后立即创建文件(并在用户注销时删除):

lockfile = os.path.join(user_dir, ".locked")
with open(lockfile, "w") as _:
    os.utime(lockfile)

在我的Windows 7 Professional机器上,这很好用。它在我的本地Windows 10测试机上也能正常工作。

现在,我在远程位置有一个客户端正在尝试使用该程序。显然,他们一直得到一个权限错误:[Errno 13] Permission denied: '<user_dir>\.locked'。 (他们的路径似乎有效,程序创建user_dir或编写config.ini文件没有问题,因此在目录上写入权限应该不是问题。)

某些Windows版本可能在以点开头的文件出现问题吗?可以使用下划线等代替帮助吗?

客户端使用Windows10(Enterprise)版本1809(Build 17763.379)。

(这里很难调试,因为我必须在每次更改后重新编译安装程序,如果这个甚至有意义的话,我们会很高兴...有关这个问题的潜在来源的任何其他想法都是受欢迎的!)

python windows windows-10 permission-denied
2个回答
1
投票

显然,它确实是起始点与一些(但不是全部)Windows版本冲突。我创建了一个新版本,文件名为“_locked”,现在工作正常。


0
投票

根据这篇文章,创建以点开头的文件名仅添加到Windows 10 1903:

https://www.ghacks.net/2019/02/25/windows-10-1903-support-for-filenames-and-folders-with-beginning-dot-character/

与Windows Server 2019有类似的经验,至少不可能通过文件浏览器添加.files。解决方法是通过PowerShell创建文件,但我想这在这里没有任何帮助。 :|

© www.soinside.com 2019 - 2024. All rights reserved.