如何更改文件的权限/属性,使其在使用Python的Windows中不可读
我正在尝试测试一些代码,为了测试它,我需要在特定位置获得一个异常:如何更改文件的权限/属性,使其在使用Python的Windows中不可读,python,windows,permissions,attributes,Python,Windows,Permissions,Attributes,我正在尝试测试一些代码,为了测试它,我需要在特定位置获得一个异常: def makeThisFunctionReturnTrue(filename): if os.path.exists(input) and os.path.isfile(filename): try: open(filename, "r") except IOError, err: return True return False
def makeThisFunctionReturnTrue(filename):
if os.path.exists(input) and os.path.isfile(filename):
try:
open(filename, "r")
except IOError, err:
return True
return False
我需要找出什么输入文件名会导致上述函数返回True。我认为解决方案在于更改文件中的权限或属性。我可以通过windows资源管理器进入文件属性,然后进入安全性,然后拒绝权限,手动强制执行错误。但是,我需要能够在Python中动态创建文件,然后通过Python更改权限以强制执行错误
我的第一个想法是使用os.chmod;但是,此功能在Windows环境中似乎受到限制
我的一位同事建议我使用win32file.SetFileAttributes,但我找不到任何关于此函数的好文档
谢谢你的帮助
卡勒布·鲁洛你自己提出这个例外就行了
raise IOError('SUITABLE INFO HERE')
我猜您不喜欢只返回true而不尝试打开文件以集成测试应用程序的其余部分?Win32 file函数或多或少是与Win32 API的直接绑定。请尝试文档:谢谢。我现在正在调查这件事。我从那份文件中找不出答案。我确实找到了一个用C写的人:我不认为这是OP想要的,鉴于他明确要求采用编程方式使文件不可读,@millimoose引用OP-为了测试它,我需要在特定位置获取异常-强制引发异常比在文件系统IMHO上乱搞要好得多。如果Python可以创建这个文件,它几乎是一个给定的文件,你不会得到异常,因为它成功了。我不能更改我正在测试的代码,因为那样会破坏目的。测试特定代码序列的唯一方法是生成IOError。在不更改生成IOError的代码的情况下生成IOError的唯一方法是给它一个没有读取权限的文件。@CalebRouleau我不确定你是否同意我的观点,或者你是否在考虑其他问题;请您澄清一下好吗?millimoose完全正确。我不能像你说的那样做。