繁体   English   中英

在python中的文本文件中编辑特定行

[英]Edit a specific line in a text file in python

我想在python中的文本文件中编辑一行。

我有一个文本文件

name:
address:
age:

我需要将内容添加到上述文件的某些特定文件中。 基本上填充一些字段。

例如:输出应为

name:
address:xxx
age:20

我通常使用“ xreadlines()”来操纵文本文件(例如1GB文件)。 例如,如果我想将所有日期都移到行首,则下面的示例显示为Python代码。

inputfile:inputfile.txt

$ Name1
名称1 xx xx
日期水类别
19620701 100 a1
19630801 200 b1
19630901 150 c1
$ Name2
名称2 xx xx
日期水类别
19620701 200 a2
19630801 100平方米
19630901 300厘米2
...

outFile:Outfile.txt。 即使使用大量txt文件,该程序也只需20秒即可完成运行。

名称1名称1 xx xx日期
水类别
19620601 100 a1
19630701 200 b1
19630801 150 c1
名称2
名称2 xx xx
日期水类别
19620601 200 a2
19630701 100平方米
19630801 300毫升
...

Python代码:

inputFile=open('inputfile.txt','w')
OutFile=open('Outfile.txt'+,'w')
date0=date_init='19620601'
lines1=open(inputFile,'r').xreadlines()
for line in lines1:
    line_date=line[0:8] #Take the 1st 8 char,'19620701'
    if line_date.isdigit():
        OutFile.write(date0+line[8:])
        date0=line_date
    else:
        date0=date_init #Start from the first date
        OutFile.write(line)
open(inputFile,'r').close()
OutFile.close()

我喜欢使用fileinput模块来编辑文件,如下所示:

import fileinput
import sys

for line in fileinput.input(inplace=True):
    # Whatever is written to stdout or with print replaces
    # the current line
    if line.startswith("address:"):
        print("address:xxx")
    elif line.startswith("age:"):
        print("age:20")
    else:
        sys.stdout.write(line)

只需将文件名作为参数传递给python命令,例如:

python myprogram.py data.txt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM