找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 108|回复: 9

python大佬帮助,python去重

[复制链接]

18

主题

162

回帖

428

积分

中级会员

积分
428
发表于 2018-11-1 15:30:54 | 显示全部楼层 |阅读模式
本帖最后由 king 于 2018-11-1 15:35 编辑

计划对文件去重重复行,网上看到这个两个python脚本说可以,win7运行出问题。
我python白痴一个,请教大佬是什么问题。

第一个:效率不错,但是去重运行到26800 kB就退出了
import shutil
rFile = open("a.txt", "r")
wFile = open("b.txt", "w")
allLine = rFile.readlines()
rFile.close()
h = {}
for i in allLine:
    if not h.has_key(i):
        h=1
        wFile.write(i)
wFile.close()


第二个,效率太慢,1分钟才1M文件。。
"
回复

使用道具 举报

27

主题

1092

回帖

2381

积分

金牌会员

积分
2381
发表于 2018-11-1 15:37:10 | 显示全部楼层
linux 用shell来完成吧
cat a.txt b.txt > c.txt
sort c.txt |uniq > d.txt
回复

使用道具 举报

18

主题

162

回帖

428

积分

中级会员

积分
428
 楼主| 发表于 2018-11-1 15:37:56 | 显示全部楼层

aru 发表于 2018-11-1 15:37

linux 用shell来完成吧
cat a.txt b.txt > c.txt
sort c.txt |uniq > d.txt

自己的电脑  win系统啊
回复

使用道具 举报

27

主题

1092

回帖

2381

积分

金牌会员

积分
2381
发表于 2018-11-1 15:37:00 | 显示全部楼层

king 发表于 2018-11-1 15:37

自己的电脑  win系统啊

虚拟机装个linux
或者安装一个msys也行
回复

使用道具 举报

49

主题

570

回帖

1411

积分

金牌会员

积分
1411
发表于 2018-11-1 15:38:59 | 显示全部楼层
支持沙发大佬 shell 的工具基本都是 c写的 肯定快得多了
回复

使用道具 举报

7

主题

868

回帖

1779

积分

金牌会员

积分
1779
发表于 2018-11-1 15:37:00 | 显示全部楼层
小白用win 大神Linux 神仙一眼望穿
回复

使用道具 举报

9

主题

71

回帖

201

积分

中级会员

积分
201
发表于 2018-11-1 15:40:04 | 显示全部楼层
本帖最后由 gougou6423 于 2018-11-2 03:47 编辑

半夜撸了个代码,测试了半天不同去重方法的效率,找到的效率最高的方案思路应该和你说的第二个差不多,你列的第二个效率低是因为它在循环里不停的print,正常来讲这个速度应该非常快
用了一个120M的txt文件测试,重复率差不多是90%,从开始读取原文件到最终写好去重文件用了4.5s
以下代码中待去重文件为a.txt,去重后的文件是b.txt
[ol]
  • #待去重文件
  • r =  open('a.txt')
  • def uniq():
  •         seen = set()
  •         for x in r:
  •                 if x in seen:
  •                         continue
  •                 seen.add(x)
  •                 yield x
  • s = ''.join(list(uniq()))
  • r.close()
  • #去重后文件
  • with open('b.txt', 'w') as f:
  •         f.write(s)[/ol]复制代码
  • 回复

    使用道具 举报

    71

    主题

    904

    回帖

    2083

    积分

    金牌会员

    积分
    2083
    发表于 2018-11-1 15:46:18 | 显示全部楼层
    嗯嗯,对对对,set就可以去重
    回复

    使用道具 举报

    18

    主题

    162

    回帖

    428

    积分

    中级会员

    积分
    428
     楼主| 发表于 2018-11-2 03:09:55 | 显示全部楼层

    gougou6423 发表于 2018-11-2 03:09

    半夜撸了个代码,测试了半天不同去重方法的效率,找到的效率最高的方案思路应该和你说的第二个差不多,你列 ...

    感谢打来   效率很好   但是还是遇到与1一样的问题   只能26800kB   26M就自动终止了   
    这是啥原因
    回复

    使用道具 举报

    0

    主题

    1

    回帖

    4

    积分

    新手上路

    积分
    4
    发表于 2018-11-2 06:42:24 | 显示全部楼层
    报错是什么?你看下运行时的内存占用?我用120m的测试文件没问题呀
    "

    没有报错信息    就是cmd运行后自动结束  然后看文件只有26800k   是500多兆
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2025-5-9 13:34 , Processed in 0.020076 second(s), 4 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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