程序文件目录中的IO操作
我写了一个程序,它可以从一个.txt文件中读取数据,也可以把数据写入另一个.txt文件。不过,我遇到了一个问题。当我在普通的文件夹里运行这个程序时,一切都很顺利。但当我把它放到C:\Program Files这个文件夹里运行时,就出现了问题。我收到的错误信息是IOERROR: [Errno 13] Permission denied: 'my subdirectory'。我觉得这可能是因为这个文件夹在编辑文件时有一些额外的权限限制。
这是在Windows 7系统上,如果你还没注意到的话。
另外,如果这有影响的话,这个程序是用Python写的,然后用py2exe转换成了.exe文件。
4 个回答
2
最可能的原因是,在Windows 7系统中,“Program Files”文件夹需要管理员权限才能创建子文件夹。
你可以以管理员身份运行Python(按住Shift键,右键点击python.exe,选择“以管理员身份运行”),或者选择一个不是“Program Files”的文件夹来写入数据。
2
我建议把文件夹保存在 %appdata%\我的子目录里。这样你就不需要管理员权限了。
3
在Windows Vista和7(还有XP,但只有在非管理员用户下运行时,默认不是这种情况)中,所有位于\Program Files
和\Windows
下的文件夹,以及C:\
的根目录,都需要管理员权限才能进行操作。其实,你根本不应该尝试在这些地方写东西。这是为了安全考虑,防止恶意软件进入不该去的地方。自从Vista发布以来,已经有很多关于UAC
(用户账户控制)的文章可以参考。你可以从这里开始了解。