【问题标题】:IOError: [Errno 22] invalid mode ('r') or filenameIOError: [Errno 22] 无效模式 ('r') 或文件名
【发布时间】:2018-03-28 14:55:08
【问题描述】:
def read_texts():
  quotes = open("‪C:\\movie_quotes.txt")
  content_of_file = quotes.read()
  print(content_of_file)
  quotes.close()

在运行它之前会出现: appearing

我继续运行这段代码,出现了这个错误:

Traceback (most recent call last):
File "C:\Python27\check_profanity.py", line 7, in <module>
read_texts()
File "C:\Python27\check_profanity.py", line 2, in read_texts
quotes = open("‪C:\\movie_quotes.txt")
IOError: [Errno 22] invalid mode ('r') or filename: '\xe2\x80\xaaC:\\movie_quotes.txt'

我使用 python 2.7.14 请问我需要答案!!!

【问题讨论】:

  • 你用什么来编写你的程序?从堆栈跟踪中的行 quotes = open("‪C:\\movie_quotes.txt") 来看,它似乎使用了不应该使用的编码。
  • 名称的开头似乎有不受支持的字符。自己写路径=不要从其他地方复制它并检查它是否仍然发生
  • 它在我的系统上完美运行,只是更改了文件路径,因为我使用的是 ubuntu。
  • 尝试输入相同的路径。 (就像提到的@ddor254 一样,不要从其他地方复制)我在我的系统上尝试了同样的方法,我在字符串的开头得到了一个流浪的\u202a。但是当我输入它时,它不存在。
  • @ddor254 还是一样

标签: python python-2.7


【解决方案1】:

您的代码中有一个不可见的字符。使用十六进制编辑器或十六进制转储器查看它:

$ echo 'open("C:\\' | hd
00000000  6f 70 65 6e 28 22 e2 80  aa 43 3a 5c 5c 0a        |open("...C:\\.|

有问题的字符是U+202a, the left-to-right embedding character,编码为e2 80 aa的UTF-8。

通过删除 ("C: 并重新输入来从源代码中删除该字符。

【讨论】:

    【解决方案2】:

    尝试使用正斜杠。

    open("‪C:/movie_quotes.txt")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      相关资源
      最近更新 更多