找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26190|回复: 7

[文本处理] 【已解决】删除同名文件的重复内容

[复制链接]
发表于 2018-2-24 20:14:09 | 显示全部楼层 |阅读模式
本帖最后由 屡败屡战 于 2018-3-6 18:04 编辑

各位论坛大伽过年好!!
    我有个请求:
    假设有3~5个文件夹,其中各个文件夹内文件是同名的(即文件标题是相同的),其中同名文件中的内容,有80%·90%内容是相同的,多少会有一些出入。
    我想要实现的结果是:在这几个文件夹中,在同名文件之间,若发现有相同的“行”内容,则全部删除不保留,在原始文件中只保留不重复的内容。
    不知遒是否能够实现。
发表于 2018-2-24 23:22:55 | 显示全部楼层
测试文件夹d:\1,d:\2
同文件名不重复的数据输出到d:\3文件夹
Python 3.5
  1. import os

  2. dic = {}
  3. def extract(dirPath='.'):

  4.     for i in os.listdir(dirPath):
  5.         with open('%s\%s' % (dirPath, i), 'r') as file:
  6.             for line in file:
  7.                 if i not in dic:
  8.                     dic[i] = []
  9.                 if line not in dic[i]:
  10.                     dic[i].append(line)
  11.                     
  12. def save(dirpath='.'):
  13.     for i in dic:
  14.         with open(r'%s\%s' % (dirpath, i), 'w') as file:
  15.             file.writelines(dic[i])

  16. #multiple source folder
  17. for i in [r'D:\1',r'D:\2']:
  18.     extract(i)

  19. #save folder
  20. save(r'D:\3')
  21. #print(dic)
复制代码
发表于 2018-2-25 10:40:19 | 显示全部楼层
  1. #!/usr/bin/python
  2. # -*- coding:utf-8 -*-
  3. #在这几个文件夹中,在同名文件之间,若发现有相同的“行”内容,则全部删除不保留,在原始文件中只保留不重复的内容。

  4. import os


  5. dic = {}
  6. def uniq(dirPath='.'):

  7.     for i in os.listdir(dirPath):
  8.         with open('%s\%s' % (dirPath, i), 'r+') as file:
  9.             print("%s\n%s\n%s" % ('{:*<30}'.format(''), i, '{:*<30}'.format('')))
  10.             f = file.readlines()
  11.             file.seek(0)
  12.             file.truncate()
  13.             for line in f:
  14.                 if i not in dic:
  15.                     dic[i] = []
  16.                 if line not in dic[i]:
  17.                     dic[i].append(line)
  18.                     file.write(line)
  19.                     print(line)

  20. #multiple source folders
  21. for i in [r'D:\1',r'D:\2']:
  22.     uniq(i)
复制代码

评分

参与人数 1技术 +1 收起 理由
屡败屡战 + 1 老师技术超赞!!

查看全部评分

 楼主| 发表于 2018-2-25 12:49:41 | 显示全部楼层
ivor老师:
你真得很好,热心帮助菜鸟,很感谢!!
同时觉得您的代码好像很高深,麻烦您指点下,代码该“另存为”什么样的后缀名?要下载什么软件运行代码?及如何运行代码??
我的是win7  64位系统。
发表于 2018-2-25 12:58:32 | 显示全部楼层
回复 5# 屡败屡战


    下载地址:https://www.python.org/ftp/python/3.6.4/python-3.6.4.exe

代码保存后缀    .py
 楼主| 发表于 2018-2-25 16:10:57 | 显示全部楼层
ivor老师:
请帮忙改个代码,此代码是给多个txt文本内容批量添加顺序数字的,
例如顺数第一行、第二行... 依次添加【0】、【1】、【2】.....等等顺序数字
现在,我要反其道为之。
即“倒数”的第一行、第二行... 依次添加【0】、【1】、【2】.....等等顺序数字
要求顺序数字是由“下”向“上”依次添加的。
如此倒着添加“顺序数字”,便于我日后提取xx行內容。
代码如下:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /r %%i in (*.txt) do (
  3.    set num=0
  4.    for /f "usebackq delims=" %%a in ("%%~nxi") do (
  5.       echo 【!num!】¥%%a>>temp.txt
  6.       set /a num+=1      
  7.    )
  8.    move temp.txt "%%i"
  9. )
  10. pause  
复制代码
效果图:
修改前:

修改后:
发表于 2018-2-25 17:43:22 | 显示全部楼层
本帖最后由 ivor 于 2018-2-25 18:06 编辑

回复 7# 屡败屡战
  1. <# :
  2. @echo off
  3. rem 增强代码兼容性,代码保存为 ".bat"、".cmd"、".ps1"均可执行
  4. powershell Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
  5. more +8 "%~f0" >"%~dpn0.ps1"
  6. powershell -File "%~dpn0.ps1"
  7. del "%~dpn0.ps1" & pause & exit /b
  8. #>
  9. dir *.txt | foreach {
  10.     $con = get-content $_
  11.     $n = 0
  12.     del $_
  13.     for ($i=$con.Count-1; $i -ge 0; $i-- -and $n++)
  14.     {
  15.         "【{0}】¥{1}" -f $n,$con[$i]
  16.         "【{0}】¥{1}" -f $n,$con[$i] | out-file -FilePath $_ -Append
  17.     }
  18. }
复制代码
 楼主| 发表于 2018-2-25 20:09:26 | 显示全部楼层
ivor老师:
      此代码运行完美,但我这里有些小问题,我的计算机好像不太支持“powershell 代码”(我安装powershell 文件好多遍,均安装失败)。于是我将此代码“另存为”.bat时,其代码运行只针对“桌面”的文件夹有效。但在其它盘符运行,则无效。自己估计,好傢是本地计算机不支持“powershell 代码”所致。
      望求个“纯”的批处理代码,使其可以在其它盘符运行。

      同样:我的另外求助贴,【求助】批量提取N个文本的倒数任意行内容??
其中,老师的代码(增强代码兼容),也是如此,不知道咋回事??

ivor老师:如果勉为其难,就算了,我将待处理文件移至桌面,代码也可以使用


代码在其他盘符运行错误:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 04:54 , Processed in 0.020402 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表