从列表写入文件时,最终输出错过了列表中的某些成员

时间:2016-05-01 10:24:35

标签: python

有一个列表,其中每个成员都是一个8位数的字符串。

package com.example.zohaib.ultimatesmsblocker;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class FileReader {
    InputStream inputStream;

    public FileReader(InputStream inputStream){
        this.inputStream = inputStream;
    }
    public List<String[]> read(){
        List<String[]> resultList = new ArrayList();

        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        try {
            String csvLine;
            while ((csvLine = reader.readLine()) != null) {
                String[] row = csvLine.split(",");
                resultList.add(row);
            }
        }
        catch (IOException ex) {
            throw new RuntimeException("Error in reading CSV file: "+ex);
        }
        finally {
            try {
                inputStream.close();
            }
            catch (IOException e) {
                throw new RuntimeException("Error while closing input stream: "+e);
            }
        }
        return resultList;
    }
}

我想在.txt上写下所有这些内容,如下所示:

values = [ '12345678', '23848238', '23441236', ...

我尝试使用以下代码执行此操作:

123456782384823823441236...

结果是.txt缺少第一个数字(在示例中为'1'),然后一直错过每八位数字直到结尾。我已经尝试搞乱我索引所有内容的方式(并确实得到了第一个数字显示)但它仍然错过了每八位数。

2 个答案:

答案 0 :(得分:1)

如果您只想将该列表中的所有字符串写入文件,则无需检查长度和搜索以及所有这些。

with open('a.txt', 'w') as output:
    for item in values:
        output.write(item)

答案 1 :(得分:1)

您错过了第一个字符,因为您的seek位于循环的末尾 - 导致您覆盖第二次迭代中的第一个字符。

由于range(0,7)[0,1,2,3,4,5,6]

,因此您每8个字符丢失一次

你应该真的停止写这样的数据,只是像@ TigerhawkT3建议的那样一个一个地输出项目 - 根本没有寻求。