在 Python 中逐行读取文件

新手上路,请多包涵

我对 Python 很陌生。所以我正在尝试我的第一段基本代码。所以我试图读取一个文件并在 Python 中逐行打印它。这是我的代码:

 class ReadFile(object):

    def main (self):

        readFile = ReadFile()
        readFile.printData()

    def printData(self):

        filename = "H:\\Desktop\\TheFile.txt"

        try:
            with open(filename, 'r') as f:
                value = f.readline()
                print(value)

            f.close()

        except Exception as ex:
            print(ex)

现在当我运行它时,我没有得到任何输出。所以我尝试调试它。我看到控件从一种方法跳转到另一种方法 (main –> printData) 然后存在。它不会在方法中执行任何操作。你能告诉我我在这里做错了什么吗?我是新手,所以对代码为何以这种方式运行的一点了解也很好。

原文由 hell_storm2004 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 545
2 个回答

如果这里的想法是了解如何逐行读取文件,那么您需要做的就是:

 with open(filename, 'r') as f:
  for line in f:
    print(line)

将它放在 try-except 块中并不常见。

回到您的原始代码,那里有几个错误,我假设这些错误源于对类在 python 中的定义/工作方式缺乏了解。

您编写该代码的方式表明您可能具有 Java 背景。我强烈建议参加 Coursera 或 EdX 上提供的无数免费且非常好的在线 Python 课程之一。


无论如何,这是我如何使用类来做到这一点:

 class ReadFile:
    def __init__(self, path):
        self.path = path

    def print_data(self):
        with open(self.path, 'r') as f:
            for line in f:
                print(line)

if __name__ == "__main__":
    reader = ReadFile("H:\\Desktop\\TheFile.txt")
    reader.print_data()

原文由 Silver 发布,翻译遵循 CC BY-SA 4.0 许可协议

您通常不会将 main 方法放在类中。 Python 不像 Java 或 C#。加载文件时,类外的所有代码都会执行。

只有当你想将一些数据和方法一起封装在一个对象中时,你才创建类。在你的情况下,看起来你根本不需要一个类,但是如果你想要一个类,你必须明确地创建并调用它,例如:

 class A:
    def __init__(self):
        print('constructor')

    def bang(self):
        print('bang')

# code outside of the class gets executed (like a 'main' method in Java/C#)
a = A()
a.bang()

原文由 Milo Bem 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题