您正在尝试打开一个目录,不是一个文件,因为调用dirname
在这一行:
passwordList = open(os.path.dirname(file+'.txt'),"r")
要打开文件而不是包含它的目录,您需要类似以下内容:
passwordList = open(file + '.txt', 'r')
或者更好的是,使用with
构造以确保文件在完成后关闭。
with open(file + '.txt', 'r') as passwordList:
# Use passwordList here.
...
# passwordList has now been closed for you.
在 Linux 上,尝试打开目录会引发IsADirectoryError
在 Python 3.5 中,以及IOError
在Python 3.1中:
IsADirectoryError: [Errno 21] 是一个目录: '/home/kjc/'
我没有 Windows 盒子来测试这个,但根据博士的评论 https://stackoverflow.com/questions/38711568/python-permission-error-when-reading#comment64800837_38711568,至少有一个版本的 Windows 引发了PermissionError
当您尝试打开目录时。
PS:我认为你应该相信用户输入整个目录和文件名他或她自己——而不需要附加'.txt'
到它---或者你应该只要求目录,然后附加一个默认文件名(比如os.path.join(directory, 'passwords.txt')
).
无论哪种方式,请求一个“目录”,然后将其存储在名为的变量中file
肯定会令人困惑,所以选择其中之一。