python2 移除重复的c c++头文件

哈哈,实现了简单功能. 很多特殊情况没有考虑. 参数是文件名, 不要有路径名. 可以正常工作

import sys
def getheader(s):
	a = s.find('#include')
	if a==-1:
		return '',False
	a = s.find('/*')
	b = s.find('*/')
	if b>a:
		s = s[0:a]+s[b+2:]
	a = s.find('//')
	if a!=-1:
		s = s[0:a]

	a = s.find('<')
	b = s.find('>')
	if b>a:
		return s[a:b+1],True
	a = s.find('"')
	b = s.find('"',a+1)
	if b>a:
		return s[a:b+1],True
	return '', False

headers=set()
print 'argc',sys.argv
if len(sys.argv)>1:
	f = open(sys.argv[1])
	ls = f.readlines()
	nls=[]
	for l in ls:
		head,success = getheader(l)
		if success:
			headers.add(head)
		else:
			nls.append(l)
	f.close()
	nf = open("new"+sys.argv[1],'w+')
	for h in headers:
		nf.write("#include"+h+'\n')
	for l in nls:
		nf.write(l)
	nf.close();

去重前

#include <ros/ros.h>
#include <tf2_ros/transform_listener.h>
#include <geometry_msgs/TransformStamped.h>
#include <geometry_msgs/Twist.h>
#include <iostream>
#include <tf2_ros/static_transform_broadcaster.h>
#include <geometry_msgs/TransformStamped.h>
#include <cstdio>
#include <tf2/LinearMath/Quaternion.h>
#include<opencv2/opencv.hpp>
#include<opencv2/aruco.hpp>
using namespace std;
using namespace cv;
#include <geometry_msgs/Pose.h>
#include <tf2/LinearMath/Quaternion.h>
#include <tf2/LinearMath/Matrix3x3.h>
#include <tf2/LinearMath/Vector3.h>
#include <tf2_ros/transform_listener.h>
#include <tf2/LinearMath/Quaternion.h>
#include <tf2_ros/transform_broadcaster.h>
#include <geometry_msgs/TransformStamped.h>
#include <tf2_ros/transform_listener.h>
#include <sensor_msgs/Image.h>
#include <boost/foreach.hpp>
#define foreach BOOST_FOREACH
#include <cv_bridge/cv_bridge.h>
#include <sensor_msgs/image_encodings.h>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>                       //zliu7
#include <opencv2/video/background_segm.hpp>           //zliu7
#include <dirent.h>
#include <fstream>
#include <nav_msgs/Odometry.h>
#include <sensor_msgs/Joy.h>
#include <sensor_msgs/Imu.h>
#include <mavros_msgs/RCOut.h>
#include <cstring>
#include <ros/ros.h>
#include <image_transport/image_transport.h>
#include <std_msgs/Time.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <algorithm>
#include <math.h>
#include <ros/ros.h>
#include <tf2_ros/transform_listener.h>
#include <geometry_msgs/TransformStamped.h>
#include <geometry_msgs/Twist.h>
#include <iostream>
#include<opencv2/opencv.hpp>
#include<opencv2/aruco.hpp>
using namespace std;
using namespace cv;
#include <geometry_msgs/Pose.h>
#include <pcl_msgs/CVPOSE.h>
#include <tf2/LinearMath/Quaternion.h>
#include <tf2/LinearMath/Matrix3x3.h>
#include <tf2/LinearMath/Vector3.h>
#include <tf2_ros/transform_listener.h>
#include <tf2/LinearMath/Quaternion.h>
#include <tf2_ros/transform_broadcaster.h>
#include <geometry_msgs/TransformStamped.h>
#include <tf2_ros/transform_listener.h>

#include <geometry_msgs/TransformStamped.h>
#include <tf2/utils.h>
 
using namespace tf2;
#include <geometry_msgs/TransformStamped.h>
#include <tf2/utils.h>
#include "halfsa.hpp"
#include "halfsa.hpp"
// #include<stdio.h>
#include<string.h>

去重后

#include<stdio.h>
#include<cstdio>
#include<sensor_msgs/image_encodings.h>
#include<geometry_msgs/TransformStamped.h>
#include<sensor_msgs/Imu.h>
#include<math.h>
#include<tf2_ros/transform_listener.h>
#include<mavros_msgs/RCOut.h>
#include<dirent.h>
#include<opencv2/highgui/highgui.hpp>
#include<algorithm>
#include<tf2/LinearMath/Vector3.h>
#include<fstream>
#include<tf2_ros/static_transform_broadcaster.h>
#include<cv_bridge/cv_bridge.h>
#include<opencv2/core/core.hpp>
#include<sensor_msgs/Joy.h>
#include<std_msgs/Time.h>
#include<vector>
#include<opencv2/opencv.hpp>
#include<tf2/LinearMath/Quaternion.h>
#include<opencv2/video/background_segm.hpp>
#include<sensor_msgs/Image.h>
#include"halfsa.hpp"
#include<opencv2/imgproc/imgproc.hpp>
#include<tf2/LinearMath/Matrix3x3.h>
#include<nav_msgs/Odometry.h>
#include<ros/ros.h>
#include<geometry_msgs/Twist.h>
#include<cstring>
#include<tf2_ros/transform_broadcaster.h>
#include<image_transport/image_transport.h>
#include<tf2/utils.h>
#include<geometry_msgs/Pose.h>
#include<iostream>
#include<opencv2/aruco.hpp>
#include<pcl_msgs/CVPOSE.h>
#include<boost/foreach.hpp>
#include<stdlib.h>
#include<string.h>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值