推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
AlisaDestiny
V2EX  ›  Python

Python 如何按照行来分割大文件。

  •  
  •   AlisaDestiny · Jan 1, 2017 · 7677 views
    This topic created in 3597 days ago, the information mentioned may be changed or developed.

    现在有一个文件有一百多万条数据,按行存储的。 100 多 M ,文本类型的。我想分割成小文件。每个文件 10000 行。想问下各位大神有没有解决办法。或者有代码就更好了。

    Supplement 1  ·  Jan 1, 2017
    感谢大家。问题成功解决了。我也成功进入了邻居家的路由器管理界面。哈哈哈。

    我说的大文件实际上是一个常用密码集合。少的密码文件 有 100 多 M 。多的文件有压缩包有 1G 多。

    最后,还是感谢大家。
    24 replies  •  2017-01-03 11:08:05 +08:00
    ipwx
    ipwx
    Jan 1, 2017
    1
    100M 这个还需要问大神…… 老老实实地边读边写不就行了,时间都在 IO 上不在运算上, Python 绰绰有余。

    哦对了,最好是读写的两个文件在两块硬盘上,不然就很慢了。
    z657386160z
    z657386160z
    Jan 1, 2017 via iPhone
    2
    split -l
    skydiver
    skydiver
    Jan 1, 2017
    3
    这种事情还需要用 Python ?直接 coreutils 自带的命令 split -l 10000 就可以了。
    484A4B
    484A4B
    Jan 1, 2017
    4
    如果不限定 Python 的话,用 shell 一行就够了
    AlisaDestiny
    AlisaDestiny
    OP
    Jan 1, 2017
    6
    @ipwx
    如果把这一百多万行数据读到内存中用 split 分成一百多万行,我担心程序会崩~~

    @z657386160z
    @skydiver
    @484A4B
    哎。关键是是 window 系统。没有 split 命令。 QAQ
    AlisaDestiny
    AlisaDestiny
    OP
    Jan 1, 2017
    7
    @ipwx thank you very much.
    Lpl
    Lpl
    Jan 1, 2017 via Android
    8
    长春儿~?
    v23ex
    v23ex
    Jan 1, 2017 via iPhone
    9
    先在本地测试
    Izual_Yang
    Izual_Yang
    Jan 1, 2017 via Android
    10
    guyskk
    guyskk
    Jan 1, 2017 via Android
    11
    100M 不大,全部读进内存没事的
    ericls
    ericls
    Jan 1, 2017 via iPhone
    12
    @AlisaDestiny Python 不会全部读进内存吧……
    billlee
    billlee
    Jan 1, 2017
    13
    你为什么要全部读进内存,一行行读不行吗?
    ryd994
    ryd994
    Jan 1, 2017 via Android
    14
    莫不是 PHP 程序员?
    这么大的文件我担心程序会崩 233333

    用个 for 就搞定的事
    或者 head 配合 tail ,根本不需要 Python
    jyf007
    jyf007
    Jan 1, 2017 via Android
    15
    split -l 10000
    什么 用 Python
    我不知道
    jyf007
    jyf007
    Jan 1, 2017 via Android
    16
    @AlisaDestiny msys2 (滑稽)
    kankana
    kankana
    Jan 1, 2017
    17
    @ryd994

    php 可以用 fopen, fgets, fclose 这些函数啊。不会整个读到内存的。。。
    AlisaDestiny
    AlisaDestiny
    OP
    Jan 1, 2017
    18
    @Lpl guess right.哈哈。
    RqPS6rhmP3Nyn3Tm
    RqPS6rhmP3Nyn3Tm
    Jan 1, 2017 via iPhone
    19
    Readline 读取至内存,然后写入不好吗
    AlisaDestiny
    AlisaDestiny
    OP
    Jan 1, 2017
    20
    @guyskk 确实。我按照上面别人给的代码执行。任务管理器中内存看不出变化。就是 CPU 高了。

    @billlee 初学者,就是不知道怎么多次读才来请教的。

    @ryd994 把文件分成块并不是最终目的。所以我需要用程序来解决。
    Miy4mori
    Miy4mori
    Jan 2, 2017 via Android
    21
    兄弟,学学流的概念吧,处理文件要都读内存里全世界都要疯啊
    qile1
    qile1
    Jan 3, 2017 via Android
    22
    f 。 readlines()
    araraloren
    araraloren
    Jan 3, 2017
    23
    @AlisaDestiny 自带的行读取函数大部分时候够用,大概是类似与 .readlines 之类的函数,我估计会做惰性处理,再说哪个用户会在乎那几百 M 内存。。
    kevin8096
    kevin8096
    Jan 3, 2017
    24
    awk
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1523 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 06:56 · PVG 14:56 · LAX 22:56 · JFK 01:56
    ♥ Do have faith in what you're doing.