如何分割文件的内容?

如何分割文件的内容?

我有一个文本文件,里面正好有 1000 行。我想将文件拆分成 1000 个不同的文件,方法是将每一行写入一个单独的文本文件。并且我希望拆分后的文件的名称按顺序排列。

例子:

foo.txt文件包含,

foo
bar
...
...
lastfoo

第一个分割文件必须只包含一行foo,其名称为bar1.txt。第二个文件必须只包含一行bar,其名称为。bar2.txt同样,最后一个文件应包含一行lastfoo,最后一个文件的名称为bar1000.txt

命令行(单行)方式比脚本方式更好。

答案1

用这个

split -l1 -a4 -d foo.txt bar

它创建了 1000 个文件:

bar0000
bar0001
bar0002
bar0003
...

man split有关选项的更多信息请参见:

-l, --lines=NUMBER
put NUMBER lines per output file

-a, --suffix-length=N
use suffixes of length N (default 2)

-d, --numeric-suffixes
use numeric suffixes instead of alphabetic

答案2

既然你提到命令行会更好,我明白脚本不是首选,但也不排除。

在下面的脚本中,在第一行定义sourcefiledestination directory和 (输出) 。filename

在该行中:

while currnumber <= len(lines) and currnumber <= 1000:

最后一条输出行被定义为第 1000 行,但如果您想限制输出,当然可以将其设置为任何(最大)行。或者,您可以删除该and currnumber <= 1000部分,以导出所有行。

要使用另一个(或不使用)扩展,请替换.txt或删除+".txt"

剧本:

#!/usr/bin/python3

source = "sourcefile"; destination = "/path/to"; outfilename = "outfilename"

with open(source) as lines:
    lines = lines.readlines()
currnumber = 1
while currnumber <= len(lines) and currnumber <= 1000:
    file = destination+"/"+outfilename+str(currnumber)+".txt"
    with open(file, "wt") as writefile:
            writefile.write(lines[currnumber-1])
    currnumber = currnumber+1

将其粘贴到一个空文件中,另存为export_lines.py并通过以下命令运行:

python3 /path/to/script/export_lines.py

结果:

outfilename1.txt
outfilename2.txt

etc.

答案3

  • 仍然只有一行 :) :

    c=0; while read -r LINE || [[ -n $LINE ]]; do c=$(( $c+1 )); echo $LINE>bar$c.txt; done <foo.txt
    
  • 命令太长,最好用别名:

    alias s='c=0; while read -r LINE || [[ -n $LINE ]]; do c=$(( $c+1 )); echo $LINE>bar$c.txt; done <'
    

    运行身份:

    s foo.txt
    

相关内容