使用python注释文本文件中的某些行

时间:2016-05-23 00:24:07

标签: python scripting

我是python的新手,我刚开始学习基础知识。

我正在尝试创建一个程序来获取文件并注释(使用#)等号后没有任何内容的行。

例如,

  

V12 =

     

V13 = 3

应该是

  

#V12 =

     

V13 = 3

提前感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

基本上,您需要读入文件。然后,检查每一行。如果在等号上拆分后该行有一些东西,只需按原样输出该行;否则,在前面附加一个#标签,然后输出该行。

f = open(filename, "r")
lines = f.readlines()
f.close()

output_lines = []
for line in lines:
    if len(line.split("=")[1]) > 0:
       output_lines.append(line)
    else:
       output_lines.append("#" + line)
f = open("commented" + filename, "w")
f.write("\n".join(output_lines))
f.close()

答案 1 :(得分:1)

以下是一些可以运行的代码:

python comment.py < infile > outfile

comment.py:

import sys

# stdin/stdout live in sys
# "for line in file" reads each line of the file, returning the text
# of the line including the trailing newline
for line in sys.stdin:
    if line.strip().endswith('='):
        line = "#" + line
    # print command adds a trailing newline, so we have to use all but
    # the last character of our input line
    print(line[:-1])

使用正常表达式的re模块可以获得更多的爱好。

鉴于infile:

V12 = 'hello'
V23 = 'world'
V34 =

产生

V12 = 'hello'
V23 = 'world'
#V34 =

答案 2 :(得分:1)

对于这样的事情,我会保持简单,从一个文件读取并写入另一个文件。

with open('/path/to/myfile') as infile:
   with open('/path/to/output', 'w') as outfile:
      for line in infile:
         if line.rstrip().endswith('='):
             outfile.write('#' + line + '\n')
         else:
             outfile.write(line + '\n')

答案 3 :(得分:0)

您也可以使用此代码完成任务。唯一的限制是空变量没有空格。例如。 &#39; V 1 =&#39;

MyFile=open("AFile.txt", 'r+');
newdata = []
data = MyFile.readlines()
for item in data:
    PosEquals = item.find('=')
    LenOfItem  = len(item)
    # Checks position of equals in line 
    # and also if there is anything after equal sign
    if PosEquals <> -1 and PosEquals <> LenOfItem-1:
        newdata.append(item)
    else:
        newdata.append('#'+item)
MyFile.seek(0)
MyFile.writelines(newdata)    
MyFile.close()