运行此代码
def read_text():
quotes = open("C:\Users\rajawatk\Desktop\movie_quotes.txt")
contents_of_file = quotes.read()
print(contents_of_file)
quotes.close()
read_text()
以下是错误消息
显示IOError
如果通过指定读取权限运行以下代码
如果我们添加一个代表读取权限的r,如
quotes = open(r"C:\Users\rajawatk\Desktop\movie_quotes.txt")
Voila,代码工作我能够读取movie_quotes.txt文件,这里是输出
- 休斯顿,我们遇到了问题。 (阿波罗13号)
- 妈妈总是说,生活就像一盒巧克力。你永远不会知道你会得到什么。 (阿甘正传)
- 你无法处理真相。 (几个好男人)
- 我相信一切,我什么都不相信。 (在黑暗中射击)
答案 0 :(得分:6)
如果我们添加一个代表读取权限的r,如
这不是r
所代表的含义。字符串前面的r将其标记为原始字符串,这意味着斜杠不会被解释为转义字符。
"C:\Users\rajawatk"
被定义为" C:\ Users"然后是回车,然后是" ajawatk"
r"C:\Users\rajawatk"
被定义为" C:\ Users"然后是斜线和字母r,接着是" ajawatk"。
您可能没有名称中带回车符的文件,因此前一版本不适合作为open
的参数。
答案 1 :(得分:2)
您需要指定要打开文件的模式,“\”是需要转义的转义序列。在你的情况下。
quotes = open("C:\\Users\\rajawatk\\Desktop\\movie_quotes.txt", "r")
然而,指定一个完整的路径名是不好的做法。您应该使用os.path为您提供一个工作目录。如果你使用'/'来指定目录,那么你不需要转义,它可以在windows和linux上运行。
的内容 my_dir = os.path.dirname(__file__)
file_path = os.path.join(my_dir, '../static/', 'movie_quotes.txt')
哪个会在姐妹静态目录中查找运行应用程序的目录中的文件。如果你想要它在同一目录中。
my_dir = os.path.dirname(__file__)
file_path = os.path.join(my_dir, 'movie_quotes.txt')