-
2018-07-20 08:39:49
本人学生一枚,第一次在CSND写博客。不为别的,希望能将自己学到的内容写出来,加深自己的记忆。
贴一个自己昨晚写的作业。
//将指定一行的内容全部替换为空格 #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<fcntl.h> int main(char argc,char* argv[]) { int cnt; int line; int c,c1; FILE *fp; int i=1; char ch; printf("1.txt有5行,选择其中一行替换为空格:"); scanf("%d",&line); fp=fopen("./2.txt","r+"); if(fp<0) { printf("文件打开失败!\n"); exit(1); } //检测行数,如遇到回车'/n',意味着一行的结束,i++ while(i!=line) { ch=fgetc(fp); if(ch=='\n') { i++; } } //检测到指定行开头的指针位置,将其赋值给c c=ftell(fp); //遍历一遍目标行,确定该行长度,同时for循环结束时c1为该行末尾的指针位置 while(fgetc(fp)!='\n') { c1=ftell(fp); } //将文件指针移到目标行的行首 fseek(fp,c,SEEK_SET); //得到目标行的长度 cnt=c1-c; //for循环插入想要修改的内容 for(i=0;i<cnt;i++) { fputc(' ',fp); } if(fclose(fp)==0) printf("文件关闭成功!\n"); else printf("文件关闭失败!\n"); return 0; }
昨晚做该题时遇到几个问题:
1,一开始将文件打开方式设为a+了,所以每次写入一个字符时会插在文件的末尾,所以要注意文件打开的方式(r+,r,w,w+,a,a+)。
2,输入目标行line,最开始设定为1,这样检测到目标行时正好在目标行的开头。
如有错误,望大家不惜指点。
更多相关内容 -
【快速好用】批量替换xml文件部分目标标签信息
2022-01-22 19:50:41通过简要代码对Pascal VOC数据集中的xml文件部分标签信息进行快速替换!使用背景:
使用对象:xml标签文件
我们在深度学习目标检测的相关实验当中常常会需要用到自制数据集,或者特定标签信息的数据集,有时候网上有开源的现成数据集,但可能其中表标定的标签信息不是我们需要的目标标签信息,这时我们需要对该标签信息进行快速替换,最后整理归纳为我们需要的数据集标签形式。
举例:口罩检测
目的:将xml文件中的name信息进行批量替换
原标签name:白色口罩、蓝色口罩、黑色口罩、无口罩
假如我们只想检测目标人物是否佩戴口罩,那么我们就需要将"白色口罩、蓝色口罩、黑色口罩"都替换为:“已佩戴口罩”。原标签:
批量替换:
批量替换代码:
import os.path import xml.dom.minidom # 将"白色口罩、蓝色口罩、黑色口罩"都替换为:"已佩戴口罩" # path为需要替换标签的目标文件夹 path = 'D:pythonproject\change_label\Annotation_1' files = os.listdir(path) # 得到文件夹下所有文件名称 s = [] print('------------开始替换标签名称!--------------') for xmlFile in files: # 遍历原标签文件夹 if not os.path.isdir(xmlFile): # 判断是否是文件夹,不是文件夹才打开 dom = xml.dom.minidom.parse(os.path.join(path, xmlFile)) root = dom.documentElement #替换节点,除了name也可以替换为其他节点 pathNode = root.getElementsByTagName('name') print(pathNode) print(len(pathNode)) j = len(pathNode) for i in range(j): if pathNode[i].firstChild.data == "白色口罩" or pathNode[i].firstChild.data == "蓝色口罩" or pathNode[i].firstChild.data == "黑色口罩" : print("替换前的名称为:", pathNode[i].firstChild.data) pathNode[i].firstChild.data = "已佩戴口罩" print("i为:", i) print("替换后的名称为:", pathNode[i].firstChild.data) i = i + 1 with open(os.path.join(path, xmlFile), 'w',encoding='utf8') as fh: dom.writexml(fh) print('------------标签名称替换成功!--------------')
此外:
如上代码是多个标签名称替换为一个标签名称,若需要多个标签名称替换为多个标签名称则需要在原循环中多加入几个if语句,例如:
import os.path import xml.dom.minidom # 将"白色口罩、蓝色口罩、黑色口罩"都替换为:"已佩戴口罩" # path为需要替换标签的目标文件夹 path = 'D:pythonproject\change_label\Annotation_1' files = os.listdir(path) # 得到文件夹下所有文件名称 s = [] print('------------开始替换标签名称!--------------') for xmlFile in files: # 遍历原标签文件夹 if not os.path.isdir(xmlFile): # 判断是否是文件夹,不是文件夹才打开 dom = xml.dom.minidom.parse(os.path.join(path, xmlFile)) root = dom.documentElement #替换节点,除了name也可以替换为其他节点 pathNode = root.getElementsByTagName('name') print(pathNode) print(len(pathNode)) j = len(pathNode) for i in range(j): if pathNode[i].firstChild.data == "白色口罩" or pathNode[i].firstChild.data == "蓝色口罩" : print("替换前的名称为:", pathNode[i].firstChild.data) pathNode[i].firstChild.data = "已佩戴合格口罩" print("i为:", i) print("替换后的名称为:", pathNode[i].firstChild.data) i = i + 1 with open(os.path.join(path, xmlFile), 'w',encoding='utf8') as fh: dom.writexml(fh) elif pathNode[i].firstChild.data == "黑色口罩" : print("替换前的名称为:", pathNode[i].firstChild.data) pathNode[i].firstChild.data = "已佩戴不合格口罩" print("i为:", i) print("替换后的名称为:", pathNode[i].firstChild.data) i = i + 1 with open(os.path.join(path, xmlFile), 'w',encoding='utf8') as fh: dom.writexml(fh) print('------------标签名称替换成功!--------------')
通过如上操作即可对xml文件部分信息进行批量替换啦!
#############如果各位同学觉得有用的话就麻烦点个赞支持下哈##############
-
java替换指定文件中指定的字符串参考代码
2011-11-18 21:37:04java替换指定文件中指定的字符串参考代码 -
java 替换war中的文件(class、xml......)
2019-11-18 13:51:36这几天因为在改项目中的bug时 由于前面的人改了一个bug没有提交到svn导致我在改另一个问题时,覆盖了原来修复的问题,由于他本地也没保存源码 导致我我的重新排查修改 但是这是一个特定版本 我这里没有这个版本的...原文替换方法连接:https://blog.csdn.net/dataiyangu/article/details/84283680
这几天因为在改项目中的bug时 由于前面的人改了一个bug没有提交到svn导致我在改另一个问题时,覆盖了原来修复的问题,由于他本地也没保存源码 导致我我的重新排查修改 但是这是一个特定版本 我这里没有这个版本的环境 无法排查 只能光看代码 但最后还是没有解决 最后想了一个办法替换原来war中我修改的那部分的class文件 问题最后解决了 具体操作如下(如何替换来源于这篇博客:https://blog.csdn.net/dataiyangu/article/details/84283680):
1.如果要替换的文件直接在war包的根目录(一级目录)下,直接使用jar uvf命令替换即可
如:替换a.war中b.xml文件
jar uvf a.war b.xml
标题2.如果要替换的文件在war包的二级及以下目录下,则需要以下步骤:
(1)使用jar tvf war名称 | grep 目标文件名 查询出目标文件在war包中的目录【这个是linux中的命令 你自己知道需要替换那个文件,其实不需要这个命令】
(2)使用jar xvf war名称 目标文件名(copy上面查出的全路径) 将目标文件及所在war包中的目录解压到当前路径
(3)修改目标文件的内容,或者将要新的目标文件替换掉提取出来的目标文件
(4)使用jar uvf war名称 目标文件名(和步骤(2)中的目标文件名相同) 将新目标文件替换到war包中
举例:替换opp.war包中的opp.class文件【找个干净的文件夹,把你的war放在这个文件夹下】
1、jar -xvf opp.war WEB-INF/classes/opp.class【解压命令】
2、然后将你的文件把这个class文件替换掉【替换文件,如果替换的是class文件需要将opp$1.class,和opp.class 都要替换 而不是只替换oppp.class】
3、jar -uvf opp.war WEB-INF/classes/opp.class【将这个替换的文件归档到opp.war】
这个样就完成了war包文件替换
附:jar的用法:
用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files …
选项:
-c 创建新档案
-t 列出档案目录
-x 从档案中提取指定的 (或所有) 文件
-u 更新现有档案
-v 在标准输出中生成详细输出
-f 指定档案文件名
-m 包含指定清单文件中的清单信息
-n 创建新档案后执行 Pack200 规范化
-e 为捆绑到可执行 jar 文件的独立应用程序
指定应用程序入口点
-0 仅存储; 不使用任何 ZIP 压缩
-P 保留文件名中的前导 ‘/’ (绝对路径) 和 “…” (父目录) 组件
-M 不创建条目的清单文件
-i 为指定的 jar 文件生成索引信息
-C 更改为指定的目录并包含以下文件
如果任何文件为目录, 则对其进行递归处理。
清单文件名, 档案文件名和入口点名称的指定顺序
与 ‘m’, ‘f’ 和 ‘e’ 标记的指定顺序相同。示例 1: 将两个类文件归档到一个名为 classes.jar 的档案中:
jar cvf classes.jar Foo.class Bar.class
示例 2: 使用现有的清单文件 ‘mymanifest’ 并
将 foo/ 目录中的所有文件归档到 ‘classes.jar’ 中:
jar cvfm classes.jar mymanifest -C foo/ .注:jar后面使用选项时,可以带-也可以不带-,作用是一样的。
-
被覆盖的文件如何恢复_被替换掉的文件怎么恢复-win7之家
2021-05-19 03:50:47我们需要用到一些文件恢复类的软件来操作,现在给大家讲解一下被替换掉的文件的详细恢复方法。具体步骤如下:1、首先下载一个文件恢复软件,在快速扫描一栏里面。首先我们要选择目标磁盘,即你曾经删除重要文件的...我们在使用电脑的时候,可能会不小心将不该覆盖的文件给替换覆盖掉了,这样会导致以前的文件被覆盖了直接不见了,这让用户们很是着急,那么被覆盖的文件如何恢复呢?我们需要用到一些文件恢复类的软件来操作,现在给大家讲解一下被替换掉的文件的详细恢复方法。
具体步骤如下:
1、首先下载一个文件恢复软件,在快速扫描一栏里面。首先我们要选择目标磁盘,即你曾经删除重要文件的磁盘。点击这个下拉菜单;
2、然后我们选择其中的某一个磁盘,比如我曾经在F盘中删除过重要数据,我就点击F盘;
3、然后我们可以选择性地恢复某些文件,比如你删除的文件是图片或者文档,你就可以选择专门恢复此类文件,这样可以提升恢复的效率。比如恢复图片,就点选图片选项。
4、现在已经设置好了恢复的参数,现在点击快速扫描这个按钮,即可以开始查找以前删除的文件了;
5、软件在查找删除文件的时候会有提示,已经找到多少文件, 这个过程你只需要慢慢等待就可以了,一直等到查找完成。
6、查找完成,所以过去删除的文件便会出现在左边的列表中,你可以根据其文件夹的名字来判断是不是你需要的文件。点击其中之一个文件夹,然后会在右边的列表中显示具体的文件。如果想恢复,就点击前面的复选框 ,然后点击右下角的恢复按钮,开始恢复文件。
注意事项:
任何恢复软件都无法确保百分之百地完全恢复之前删除的文件,所以,你不要把希望完全寄托于恢复类软件。
更重要的还是平常要养成良好的操作习惯,对重要的文件及时备份。
上面给大家讲解的就是被覆盖的文件的详细恢复方法,并不是可以确保百分百可以找回,不过大家还是可以尝试找回一下。
我要分享到:
-
python 复制替换文件_在Python中复制和替换文件
2020-07-25 02:55:27python 复制替换文件The python language provides a built-in module "shutil", which offers numerous high-level operations on files and collections of files. In particular, functions are provided to ... -
windows常用文件操作dos命令
2019-07-15 12:50:12文章目录dir 命令文件、目录(创建、修改、删除、复制、移动)创建目录创建文件,查看、追加、修改文件内容删除文件删除目录修改、替换目录或文件名复制、移动文件、目录复制移动other常用、实用的DOS命令 windows dos... -
Jenkins 持续集成之使用批处理替换文件中的目标字符串
2018-09-27 22:12:02Jenkins 持续集成之使用批处理替换文件中的目标字符串 一、背景 在 Android 项目开发中使用 Jenkins 持续集成,将可以解耦的 module 作为一个独立项目,然后在 Jenkins 上自动打包,推送到 maven 私服,最后主工程... -
文件替换后怎么恢复,恢复被覆盖的文件
2021-11-11 14:53:34“不小心用了新的同名文档取代了原本的word文件,有什么方法可以吧覆盖的... 从以前的版本中恢复被替换的文件 windows的备份和还原可以用于恢复修改,损毁,丢失,删除,格式化的文件和资料夹。请继续阅读下文: 右击文 -
同名文件替换怎么恢复,恢复同名文件
2021-11-11 14:36:17在命名文件时我们可能不小心把文件命名为同一个名字,这样新的版本就会覆盖之前的文件,这个时候要怎么恢复同名替换的文件呢?同名文件要怎么恢复呢? 方法一:恢复已备份的同名文件 1.启动文件记录 在控制面板中... -
Linux CentOS 复制文件、替换文件 cp 复制文件、cp 覆盖文件 cp替换文件
2019-07-08 22:16:08Linux CentOS 复制文件、替换文件 cp 复制文件、cp 覆盖文件 cp替换文件 一、Linux 复制文件语法 1、 cp [option] src dest 2、 option 可选参数如下: -a:是指archive的意思,也说是指复制所有的目录 ... -
Python : 批量替换代码文件内容,批量移动/覆盖文件
2021-06-25 16:25:12Python : 批量自动替换代码文件内容,批量移动/覆盖代码文件使用背景代码解析 - getCppHppFileList代码解析 - replace_StrInFile代码解析 - reName_File代码解析 -Tkinter 图形界面,完整代码 使用背景 在设备端GUI... -
(练习)Python实例2:文件操作,字符串,替换敏感词
2018-12-01 12:51:342-file-example.py 2-file-example-badwords.txt 2-file-example-src.txt 2-file-example-dst.txt ...把src.txt中的敏感字替换为*并另存为dst.txt import os badwords_file = '2-file-example-bad... -
Java实现对文件内容替换字符串(一)
2018-08-28 19:47:54每读取一行判断是不是含有替换的原字符串oldString,如果含有则将原字符串替换成要替换的字符串newString,然后将改行内容写入创建的新文件中newFile。最后将获取原文件的路径并删除原文件,然后将新文件改名为原... -
Shell脚本读取yml文件中的值,并替换另一文件对应的占位符
2020-04-11 00:37:491.源文件main.yaml内容 repository: Mysql ...2.目标文件value.yaml内容 image: repository: {repository} tag: {tag} port: {port} 3.替换脚本update.sh #!/bin/bash #AUTHOR:anqixiang #DATE:2020-04-1... -
linux中文件重命名_如何在Linux中重命名文件?
2020-07-19 12:14:52linux中文件重命名This tutorial will walk you through the simple steps to rename a file in Linux. 本教程将引导您完成在Linux中重命名文件的简单步骤。 It’s going to be a very simple and straightforward ... -
Java开发工具IntelliJ IDEA使用源代码系列教程(四):在文件中搜索目标
2021-03-13 07:49:23IntelliJ IDEA是Java语言开发的集成环境,IntelliJ在业界被公认为优秀的Java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、...如果要将目标搜索范围扩展到当前文件之外,... -
用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)
2017-08-02 19:50:34用批处理批量替换文件中的某个字符串(亲测可用,部分功能有待优化,欢迎指正) -
使用命令行进行替换文件
2018-10-17 10:54:01replace 比如说你要用d盘下的abc.txt替换E盘及其所有子目录下的abc.txt那就输入: replace D:\abc.txt E:\ /...提示您在替换目标文件或添加源文件之前确认。/r 替换只读文件和未受保护的文件。如果没有指定该命令行选... -
Python脚本操作Excel实现批量替换功能
2020-12-04 12:34:47大家好,给大家分享下如何使用Python脚本操作Excel实现批量替换。使用的工具Openpyxl,一个处理excel的python库,处理excel,其实针对的就是WorkBook,Sheet,Cell这三个最根本的元素~明确需求原始excel如下我们的... -
如何找回被覆盖的文件?恢复被覆盖文件的方法
2021-07-31 08:03:21大家在使用电脑时想要将文件移动到其他位置,但如果有同名文件存在旧文件就会被新文件覆盖,那出现这样一情况我们如何找回被覆盖的文件呢?可能有些小伙伴不太清楚,那么下面小编就来教大家关于恢复被覆盖文件的... -
Linux awk替换文本字符串内容
2021-05-13 21:56:43awk逐行读取文件,将每一行切成空格作为默认分隔符,然后对剪切的部分执行各种分析处理.awk'{pattern+action}'{filenames}尽管操作可能很复杂,但语法始终是相同的,其中pattern表示AWK在数据中查找的内容awk 替换,... -
python对目标检测数据集xml文件操作
2019-05-31 09:05:18博主在制作目标检测数据集时,需要将之前的标签进行替换,将person替换为rider,使用python批量处理xml格式文件如下: import os, sys import glob from xml.etree import ElementTree as ET #批量读取... -
java中使用Pattern类中和Matcher类进行查找和替换,你会吗?
2014-12-06 19:02:35无论是哪一门语言,我们总会用到正则表达式来进行字符串的查找和替换。Java中也不为过,我曾经写过一个网页---正则表达式在线测试。那时候,我还没有开始学习Java,不知道Java支持正则表达式,所以我的第一个方案是... -
C语言,文件操作详解
2018-08-19 10:35:08在 C 语言中,文件操作的函数大多包含在 头文件中,使用时记得 #include。 一、打开和关闭文件 1. 打开文件 FILE * fopen ( const char * filename, const char * mode ); 打开一个文件,成功则返回文件的... -
C语言 16行代码实现字符串中指定字符串替换
2018-08-03 17:05:35支持: 1.等长字符串替换 2.长字符串替换为短字符串 3.短字符串替换为长字符串 4.中文替换 注意:短字符串替换成长字符串要注意内存越界 .../* 功 能:将str字符串中... * 参 数:str:操作目标 oldstr:被替换者... -
maven优雅的替换依赖中的类
2022-03-23 22:53:16maven替换依赖中的类 java替换jar中的类 maven-dependency-plugin dependency:unpack -
linux系列之-jar包文件替换
2020-03-09 20:36:10相信大家都碰到过项目发包,因为某种小问题需要重新发包,但是这种改动非常小,网络不好的情况下发包啥的相当耗时,特别是网络不好,包又特别大的时候,那就更加难受了,我想着要是直接替换jar包里面的某个文件那... -
.bat批处理(九):替换带有等号=的字符串的子串
2020-04-19 11:11:18今天写这篇记录要解决的问题来源于最近一名读者的...遇到这个问题的第一感觉应该挺好处理的吧,如果批处理程序在替换操作中认为等号 `=` 比较特殊,那就加个转义字符应该就可以了,但事实却证明这种想法有些天真了...