【问题标题】:Opening a .txt file in Python在 Python 中打开一个 .txt 文件
【发布时间】:2011-12-29 03:24:55
【问题描述】:

我正在尝试使用以下函数在 Python 中打开一个 .txt 文件。

def get_my_string():
   """Returns a string of the text"""
   f = open("/home/Documents/text.txt", 'r')
   string = str(f.read())
   f.close()
   return string

我希望“字符串”是打开文件中的文本字符串。但是,调用上面的函数后,“string”是一个空列表。

【问题讨论】:

  • 这个目录结构真的存在吗?你有这个文件所需的权限吗?实际上,您应该获得文件的字符串表示形式。 f.read 周围的 str() 调用是多余的,没有任何用处。
  • 请粘贴带有输出的完整代码。您无法从该函数中获得list
  • 你说得对。这是一个愚蠢的错误(尴尬)。我没有以正确的用户身份登录,也无权访问该文件。我认为“文章”作为一个空列表返回,因为在之前的(不成功的)尝试返回一个空列表之后我没有重新定义它。非常感谢。

标签: python string list file-io text-files


【解决方案1】:
def get_my_string():
    """Returns the file inputFn"""

    inputFn = "/home/Documents/text.txt"

    try:
        with open(inputFn) as inputFileHandle:
            return inputFileHandle.read()

    except IOError:
        sys.stderr.write( "[myScript] - Error: Could not open %s\n" % (inputFn) )
        sys.exit(-1)

【讨论】:

  • 完全为空的文件不会被关闭。使用with open(inputFn, 'r') as f: return f.next()会更简洁明了
  • -1 (1) 这仅读取第一行,这不是 OP 所说的他想要的 (2) 如果有 IOError,它会抑制详细的错误信息(文件没有不存在?调用者没有权限?等等?)并无偿调用sys.exit
  • 谢谢,我编辑了我的答案以反映第 1 项的更改。我只想显示 try...except 块,以展示如何考虑错误检查。抱歉,这让您感到不安。
【解决方案2】:

你并不需要 home/documents 部分,只要 python 文件和文本文件保存在同一个文件夹中,你只需要使用 Open() 函数和字符串中的文本文件名打开文本文件所以 Open("text.txt") 你可能不需要括号,但它可以使用它们。

【讨论】:

    猜你喜欢
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多