【问题标题】:taking a character input in python from a file?从文件中获取python中的字符输入?
【发布时间】:2010-05-03 21:12:01
【问题描述】:

在 python 中,假设我有文件 data.txt 。其中有 6 行数据。我想通过遍历每个字符并找出文件中 '\n' 的数量来计算我计划执行的行数。如何从文件中输入一个字符? Readline 占据了整行。

【问题讨论】:

    标签: python file


    【解决方案1】:

    我认为您正在寻找的方法是readlines,如

    lines = open("inputfilex.txt", "r").readlines()
    

    这将为您提供文件中每一行的列表。要找出有多少行,您可以这样做:

    len(lines)
    

    然后像使用任何普通 Python 列表一样使用索引访问它,例如 lines[3]lines[-1]

    【讨论】:

      【解决方案2】:

      您可以使用read(1) 读取单个字节。 help(file) 说:

      read(size) -> 最多读取 size 个字节,以字符串形式返回。

      如果 size 参数为负数或省略,则读取直到到达 EOF。 请注意,在非阻塞模式下,数据少于请求的数据 可能会返回,即使没有给出 size 参数。

      请注意,一次读取一个字节的文件是完全不符合“Pythonic”的。这是 C 课程的标准,但 Python 可以用更少的代码完成更多的工作。例如,您可以在一行代码中将整个文件读入一个数组:

      lines = f.readlines()
      

      然后您可以通过简单的lines[lineNumber] 查找按行号进行访问。

      或者,如果您不想一次将整个文件存储在内存中,您可以逐行遍历它:

      for line in f:
          # Do whatever you want.
      

      这更具可读性和惯用性。

      【讨论】:

        【解决方案3】:

        对你来说似乎最简单的答案是:

        for line in file:
            lines += 1
            # do whatever else you need to do for each line
        

        或显式使用readline() 的等效构造。当您在上面说readline() 正确读取每一行的全部内容时,我不确定您为什么要查看每个字符。

        【讨论】:

        • 假设我想迭代到文件中的第 i 行。我将如何使用 readline 做到这一点? .. 你是说我要循环并多次执行 readline() 吗?
        【解决方案4】:

        要根据文件的行访问文件,请列出其行。

        with open('myfile') as f:
            lines = list(f)
        

        然后只需访问lines[3] 以获取第四行,依此类推。 (请注意,这不会去除换行符。)

        linecache module 对此也很有用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-11-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多