在python中排序和编写文件

时间:2016-08-02 15:04:27

标签: python sorting text-files

我的文本文件如下:

f = open('file.txt','r')

with open('file.txt') as fin:
    lines = f.readline()
print lines
with open ('file_1.txt', 'w') as fout:
    fout.write(lines)

with open ('file.txt') as fin:     
    lines = f.readlines()[0:]
print lines
with open ('file_2.txt', 'w') as fout:
    for el in lines:
        fout.write('{0}\n'.format(' '.join(el)))
f.close()

我有以下代码:

file1

这会输出file2第一行中的数字。然后输出cameron_county = pd.read_table(path + '/2016_GCC_prelim_appraisal_info_20160630.txt', encoding = 'utf-8',error_bad_lines = False) 和剩余数字列表。我如何让它迭代线,以便下一个文件从第2行开始,依此类推?基本上,遍历所有40行并在每次输出文件时删除一行。

简单地说,我希望它输出:

  • file1 =仅限行1

  • file2 =第2行至第40行

然后..

  • file3 =仅限第2行

  • file4 = lines1和3至40

..等等

我是python的新手,所以任何帮助都将不胜感激!

2 个答案:

答案 0 :(得分:0)

您可以使用len()找出文件的长度,然后使用两个for循环来迭代并每次都创建一个新的文本文件。

this.tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 30F));
this.tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 20F));

这应生成具有唯一文件名的新文件。每个文件将包含比前一个文件少一行的行。

答案 1 :(得分:0)

以下是使用with上下文管理和readlines / writelines来简化I / O的解决方案。

with open('file.txt', 'r') as input:
    linebuf = input.readlines()
# The context manager will automatically close `input`
# no matter what happens (including errors)

for ind, line in enumerate(linebuf):
    with open('file.line_{}_only.txt'.format(ind + 1), 'w') as output:
        output.writelines([line])
    # Files named like "file.line_1_only.txt" will be closed here
    with open('file.lines_except_{}.txt'.format(ind + 1), 'w') as output:
        output.writelines(linebuf[:ind] + linebuf[ind + 1:])
    # Files named like "file.lines_except_1.txt" will be closed here