2025年3月31日 星期一 乙巳(蛇)年 正月初一 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

python 删除文件某一行

时间:09-13来源:作者:点击数:41

python 删除文件某一行

  • #!/usr/bin/python
  • # -*- coding: utf-8 -*-
  • # @Time : 2020/6/29 15:06
  • # @Author : hyang
  • # @File : delLine.py
  • # @Software: PyCharm
  • import sys
  • import os
  • import random
  • import shutil
  • import string
  • def getLine_num(filename):
  • count = 0
  • for index, line in enumerate(open(filename, 'rb')):
  • count += 1
  • return count
  • def remove_Line(filename, del_line):
  • """
  • 删除文件某一行
  • :param filename:
  • :param del_line:
  • :return:
  • """
  • # 打开旧文件
  • old_file = open(filename, "rb")
  • # 打开新文件
  • new_file = open("%s.new" % filename, "wb")
  • current_line = 0
  • # 定位到需要删除的行
  • while current_line < (del_line - 1):
  • current_line_cont = old_file.readline()
  • # 把每一行写入新文件
  • new_file.write(current_line_cont)
  • current_line += 1
  • # 当前光标在被删除行的行首,记录该位置
  • seek_point = old_file.tell()
  • # 设置光标位置
  • new_file.seek(seek_point, 0)
  • # 读需要删除的行,光标移到下一行行首
  • line_con = old_file.readline()
  • print("需要删除行: {}".format(line_con))
  • # 被删除行的下一行读给 next_line
  • next_line = old_file.readline()
  • # 连续覆盖剩余行,后面所有行上移一行
  • while next_line:
  • new_file.write(next_line)
  • next_line = old_file.readline()
  • # 文件关闭
  • old_file.close()
  • new_file.close()
  • # 文件备份与替换
  • bak_f = filename + ''.join(random.sample(string.digits, 6))
  • os.rename(filename, bak_f) # 备份旧文件
  • print("源文件备份为%s" % bak_f)
  • os.rename("%s.new" % filename, filename) # 把新文件名字改成原文件的名字,就把之前的覆盖掉了
  • # def main_arg():
  • # if len(v_arg) != 2:
  • # # print(platform.system())
  • # print_arg(v_arg)
  • # print_warn("---参数输入错误--")
  • # print_warn("delLine 文件名 删除行")
  • # else:
  • # f_name = v_arg[1].strip()
  • # line_no = v_arg[2].strip() # 删除行
  • # if not line_no.isdigit():
  • # print_error("行数必须为数字" )
  • # else:
  • # if not os.path.exists(f_name):
  • # print("%s文件不存在" % f_name)
  • # else:
  • # pass
  • def main():
  • f_name = 'F:\a/logs'
  • bak_f = f_name + ''.join(random.sample(string.digits, 6))
  • line_no = '2'
  • line_no = int(line_no)
  • line_num = getLine_num(f_name) # 获得文件总行数
  • if line_no > line_num:
  • print("行数大于文件行数 " + line_num)
  • else:
  • print("文件总行数={},删除第{}行" .format(line_num, line_no))
  • remove_Line(f_name, line_no)
  • if __name__ == '__main__':
  • # 获得系统参数
  • # v_arg = sys.argv
  • # main_arg()
  • # init(autoreset=True) # 初始化,并且设置颜色设置自动恢复
  • main()
  • # print_color(Style.RESET_ALL) # 还原默认颜色

 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门