0

我正在编写一个 Python 脚本,它将从 TextWrangler 获取 STDIN,并逐行对其进行处理。在 Textwrangler 中,我使用拖放组合多个文本文件。问题是文档保留了 ^Z (0x1A) 字符,我的 Python 脚本将其解释为 EOF 指示符。结果是我的脚本只“看到”了许多组合文本文档中的第一个(直到第一个 EOF 字符)。

我已经研究并阅读了有关以二进制模式、缓冲区等读取的内容,但我对这类东西完全是新手,无法弄清楚如何实现这些想法。似乎 readlines() 寻找 EOF 并停止。我怎样才能防止这种情况?

这是我的代码:

import sys

for line_number, line in enumerate(sys.stdin.readlines()):
    if len(line) > 4:  # Blank lines are skipped
        if line.split()[0].isdigit():  #Determine if the line begins with an EVENT NUMBER
            print line.split()[7]
4

1 回答 1

0

选项 1:由于您是在 python 外部生成源文件,因此只需在 TextWrangler 之后添加一个步骤以删除有问题的字符。我已经成为 sed 和 grep 的忠实粉丝。端口可用于 Windows,并且本机可用于 *nix。

选项 2:修复 TextWrangler 中的文件。

选项 3:将 Textwrangler 步骤转换为 python 脚本并完全避免该问题。

于 2014-01-22T04:54:54.333 回答