美文网首页
python(文件中指定行中插入一行内容)

python(文件中指定行中插入一行内容)

作者: OldSix1987 | 来源:发表于2016-09-03 22:57 被阅读1153次

难点分析


(1)读取文件报错

UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 279: illegal multibyte sequence

检查文件中是否含有中文字符,如有,将代码为encoding=‘utf-8’

(2)插入一行的思路其实比较简单、暴力:将源文件中的每一行保留在一个list中,然后在list中插入一行,再写回源文件。
(3)Python命令参数:

: python xx.py argv[0] argv[1] ...
# 切记要先判断len(sys.argv)参数的个数是否达到预期,边界的判断和处理一定要全面,否则就可能会crash
sys.argv[0]  # 获取第一个参数
sys.argv[1]  # 获取第二个参数

代码


import sys
import os


def writeinfile(path, cont, line=0):
    lines = []
    with open(path, 'r', encoding='utf-8') as r:
        for l in r:
            lines.append(l)
    if line == 0:
        lines.insert(0, '{}\n'.format(cont))
    else:
        lines.insert(line-1, '{}\n'.format(cont))
    s = ''.join(lines)
    # print(s)
    with open(path, 'w') as m:
        m.write(s)
        print('writeInFile Success!')


def workit(dir_path, content):
    dirpath = dir_path
    filelists = [x for x in os.listdir(dirpath) if x.endswith('.py')]

    if filelists and len(filelists) > 0:
        print('filelist is %s' % filelists)
        filepaths = list(map(lambda x: os.path.join(dirpath, x), filelists))
        for f in filepaths:
            writeinfile(f, content, 5)
    else:
        print('nothing to handle!')

if __name__ == '__main__':
    # print('len is %s' % len(sys.argv))
    if len(sys.argv) == 3:
        workit(sys.argv[1], sys.argv[2])
    else:
        if len(sys.argv) == 2:
            workit(sys.argv[1], '#!/usr/bin/env python3')
        else:
            print("-" * 5, "Please Input the right Arguments!\ne.g. Python [xx.py] [filePath] [content]!", "-" * 20)
            raise KeyboardInterrupt



相关文章

  • python(文件中指定行中插入一行内容)

    难点分析 (1)读取文件报错 检查文件中是否含有中文字符,如有,将代码为encoding=‘utf-8’ (2)插...

  • sed-字符替换插入

    指定行的上一行或下一行插入一行或多行 sed -i 's/指定的字符/i\需插入行的内容/' 文件名称 指...

  • Python面试题-生成器

    1、处理文件,用户指定要查找的文件和内容,将文件中包含要查找内容的每一行都输出到屏幕。 2、写生成器,从文件中读取...

  • Python文件内容按行读取到列表中

    Python文件内容按行读取到列表中 示例文件内容如下: 通常来讲,我们如果只是迭代文件对象每一行,并做一些处理,...

  • shell文件处理常用指令

    对文件内容进行全局替换 对调文件中的某两列数据 将多行文件转换为一行 删除符合条件的行 输出指定行 合并两个文件内...

  • 第一周python学习2018-12-23

    源码 Python解释器:从文件第一行开始,一直运行到文件末尾,会执行文件中的每一行python代码。 Pytho...

  • 实现在文件指定行插入内容(go语言)

    要实现在一个java类文件和properties配置文件中插入一段指定代码段。properties的内容插入在文件...

  • 实用命令sed

    删除第一行 范围删除,删除1-3行 删除第n行 删除最后一行 替换文本文档中的内容 在第一行中插入文字 其中:A:...

  • Python实现从文件中读取指定行的方法

    这篇文章主要介绍了Python3实现从文件中读取指定行的方法,涉及Python中linecache模块操作文件的使...

  • 课堂笔记day15(sed的用法以及wak用法)

    1.sed命令的 -a (在文件第二行后插入内容)用法以及-i(将内容插入到文件第二行)用法 2.取出Linux中...

网友评论

      本文标题:python(文件中指定行中插入一行内容)

      本文链接:https://www.haomeiwen.com/subject/ufhlettx.html