修改包含SUB /转义字符的文件

时间:2014-11-29 23:21:42

标签: python python-2.7 unicode

我开始学习Python,并希望用它来自动化一个过程。 该过程包括

  1. 修改文件的几行
  2. 使用该文件作为可执行文件的输入
  3. 保存,移动等
  4. 重复
  5. 问题是我尝试修改的文件是用一种利用SUB character运行的语言编写的。因此,当我尝试

    with open(myFile,'r') as file:
      data = list(file)
    

    data不包含SUB字符以外的任何信息。

    因此,我需要做两件事:

    1. 在python中读取整个文件(不要在SUB字符位置过早退出),以便我可以修改它。
    2. 能够在可执行文件上运行它(也就是说,SUB字符需要返回各自的位置)。
    3. 关于如何解决这个问题的任何建议?

      由于

2 个答案:

答案 0 :(得分:0)

你在Windows上吗?引用链接到SUB字符:

  

在CP / M,86-DOS,MS-DOS,PC DOS,DR-DOS及其各种派生词中,字符26也用于表示字符流的结束,从而用于终止用户输入交互式命令行窗口(因此,通常用于完成控制台输入重定向,例如由COPY CON:TYPEDTXT.TXT发起)。

     

虽然技术上不再需要指示文件的结尾,但到目前为止,许多文本编辑器和程序语言仍支持此约定......

文本模式下的Python 2.7将停留在CTRL-Z字符(十六进制1A),因此以二进制模式打开文件:

示例:

# Create a file with embedded character 1Ah
with open('sub.txt','wb') as f:
    f.write(b'abc\x1adef')

# Open in default (text) mode and read as much as possible
with open('sub.txt','r') as f:
    print repr(f.read())

# Open in binary mode
with open('sub.txt','rb') as f:
    print repr(f.read())

输出:

'abc'
'abc\x1adef'

答案 1 :(得分:0)

使用binary mode打开文件。

with open(myFile,'rb') as file:
    for line in file:
        print line