【问题标题】:(Python) cannot open the file from directory(Python) 无法从目录打开文件
【发布时间】:2018-05-20 09:04:24
【问题描述】:

我想打开文件作为输出。

原来是“退出”

但是,我想read 文件或write 文件。通过测试,好像没有 IOError。如何打开文件?

我尝试了几个代码,但仍然找不到打开它的方法。

try:
    my_file_handle=open("/Users/name/Desktop/Trip.docx")
except IOError:
    print("File not found or path is incorrect")
finally:
    print("exit")

然后,我将“docx”更改为“doc”并添加“r”模式并调用它。

我试过了:

    try:
        my_file_handle=open('/Users/name/Desktop/Trip.doc','r')
        my_file_handle.read()
        print("hi")
    except IOError:
        print("File not found or path is incorrect")
    finally:
        print("exit")

结果是“退出”和 my_file_handle.read()

文件“/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/codecs.py”,第 321 行,在解码中 (结果,消耗) = self._buffer_decode(data, self.errors, final)

UnicodeDecodeError: 'utf-8' 编解码器无法解码位置上的字节 0xd0 0:无效的继续字节

【问题讨论】:

  • 您的错误信息是什么?我相信在打开文件时,您需要指定您是在阅读、写作等。
  • 我想看。
  • 您打算如何处理打开的文件? docx 文件是 zip 文件,因此您应该以二进制模式 (mode='rb') 打开它们。您也可以使用zipfile.ZipFile('/Users/name/Desktop/Trip.docx') 打开它们并访问存档文件。
  • 我试过“rb”。它无法正常工作。
  • 再一次,你想对打开的文件做什么?也许像python-docx 这样的库会更有用。

标签: python


【解决方案1】:

您是否测试过文件是否在块末尾实际打开?因为我想你会发现它是。 try: except: 块中的'finally'部分的代码无论是否有异常都会被遵守。

来自 python 文档:

如果 finally 存在,它指定一个“清理”处理程序。执行 try 子句,包括任何 except 和 else 子句。如果任一子句发生异常且未处理,则暂时保存该异常。 finally 子句被执行。如果有一个保存的异常,它会在 finally 子句的末尾重新引发。如果 finally 子句引发另一个异常,则将保存的异常设置为新异常的上下文。如果 finally 子句执行 return 或 break 语句,则丢弃保存的异常:

【讨论】:

  • 不行,还是打不开文件。
  • 很好奇 - 没有追溯?还是其他异常迹象?
  • 其实,你能帮我试试这个吗? "with open(/Users/name/Dexktop/Trip.docx" as f: r=f.read(20)' 其中 <..> 是尖括号内的操作,请参阅如果 r 之后包含任何内容?
  • 从我对上面@Caligary 的回复中,您可以尝试指定第二个参数来打开'rb'。 b 代表二进制。 .docx 文件实际上是 .doc 文件。
  • try as f-->不知道是不是我的输入错误。它显示无效的语法。
【解决方案2】:

打开文件时,您必须指定您的内涵。 对于写作将是:

    my_file_handle=open("/Users/name/Desktop/Trip.docx","w")

【讨论】:

  • 不,你不知道,但如果你不这样做,则暗示 r。实际上,这给了我一个想法……这是因为 .docx 文件是二进制文件吗?
  • 我尝试了另一个 -->.pages 。它仍然无法工作。
猜你喜欢
  • 2014-11-21
  • 2020-04-17
  • 1970-01-01
  • 2013-10-24
  • 2018-01-20
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
相关资源
最近更新 更多