python 文件插入第一行

本文介绍了一个Python函数,用于将多个字符串插入到文件中指定的行号处,实现高效文本编辑。通过设置行号和要插入的字符串,用户可以轻松修改大量文本文件的内容。
def file_insert(fname,linenos=[],strings=[]):  
    """ 
    Insert several strings to lines with linenos repectively. 
 
    The elements in linenos must be in increasing order and len(strings) 
    must be equal to or less than len(linenos). 
 
    The extra lines ( if len(linenos)> len(strings)) will be inserted 
    with blank line. 
    """  
    if os.path.exists(fname):  
        lineno = 0  
        i = 0  
        for line in fileinput.input(fname,inplace=1):  
            # inplace must be set to 1  
            # it will redirect stdout to the input file  
            lineno += 1  
            line = line.strip()  
            if i<len(linenos) and linenos[i]==lineno:  
                if i>=len(strings):  
                    print "\n",line  
                else:  
                    print strings[i]  
                    print line  
                i += 1  
            else:  
                print line

 fileinput.input的inplace必须要设为1,以便让stdout被重定向到输入文件里:

file_insert('a.txt' ,[ 1 , 4 , 5 ],[ 'insert1' , 'insert4' ]

 

Python 中向文件插入一行内容时,由于文件本身不支持直接插入操作,因此需要通过读取原有内容、修改内容并重新写入的方式来实现。以下是几种常见的处理方式及示例代码: ### 1. 在文件开头插入一行 如果希望在文件的最开始位置插入一行内容,可以先读取整个文件的内容,然后将新内容添加到最前面,并覆盖写回原文件。 ```python new_line = "这是要插入第一行\n" with open("example.txt", "r", encoding="utf-8") as file: content = file.read() with open("example.txt", "w", encoding="utf-8") as file: file.write(new_line + content) ``` ### 2. 在文件中间插入一行 如果要在特定行号(例如第 2 行)前插入一行内容,则可以逐行读取文件内容,并在指定位置插入新的行。 ```python insert_line_number = 2 new_line = "这是插入的新行\n" with open("example.txt", "r", encoding="utf-8") as file: lines = file.readlines() lines.insert(insert_line_number - 1, new_line) with open("example.txt", "w", encoding="utf-8") as file: file.writelines(lines) ``` ### 3. 在文件末尾追加一行 如果只需要在文件末尾添加一行内容,可以直接使用 `open()` 函数的 `'a'` 模式[^1]。 ```python new_line = "这是追加的一行\n" with open("example.txt", "a", encoding="utf-8") as file: file.write(new_line) ``` ### 注意事项 - 使用 `'w'` 模式会清空文件内容后再写入数据,因此在执行插入操作时应避免误用。 - 如果文件较大,一次性读取全部内容可能会影响性能,建议采用逐行处理的方式进行优化。 - 插入操作本质上是读取原文件内容、修改内容后重新写入的过程,因此无法避免 I/O 操作带来的性能开销。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值