在Python中打开一个.txt文件

6

我正在尝试使用以下函数在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"成为打开文件中的文本字符串。但是,在调用上述函数后,"string"变成了一个空列表。


4
这个目录结构是否真实存在?你是否拥有访问该文件所需的权限?现在,你应该获取该文件的字符串表示。在f.read周围使用str()调用是多余的且没有任何有用的作用。 - Don Question
2
请粘贴完整的代码及输出。你绝对不可能从那个函数中得到一个“列表”。 - Avaris
你们俩都是对的。这是一个愚蠢的错误(尴尬)。我没有以正确的用户身份登录,也无法访问文件。我认为“articles”返回一个空列表,因为在之前(不成功的)尝试之后,我没有重新定义它。非常感谢。 - user1120342
2个回答

10
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()更加紧凑和清晰。 - Niklas B.
-1.(1)这只读取第一行,而不是OP所说他想要的。 2.如果发生IOError,它将抑制详细的错误信息(文件不存在?调用者没有权限?等等),并随意调用sys.exit - John Machin
谢谢,我编辑了我的答案以反映第一项的更改。我只是想展示try...except块作为一种思考错误检查的方法。很抱歉这让你不高兴。 - Alex Reynolds

0

只要Python文件和文本文件保存在同一个文件夹中,您实际上不需要home/documents部分,您只需要使用Open()函数打开文本文件并将文本文件名作为字符串传递给它,例如Open("text.txt")。您可能不需要括号,但是使用它们也可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接