0

我正在用 Python 编写一个程序,它试图从同一目录中读取两个不同的文件。我的代码如下所示:

for i in spectra_files:                                           
    with open(i, 'r') as f:
        numbers = []  #list to store all mass spectrum data directly from file before being processed
        for line in f:
            if line[0].isdigit():  #skips header in file
                numbers.append(line)

        str_data = ''.join(numbers)
        #creates list for the mass and list for the intensity. to be used for plotting
        spectrum_mass = [int(x.split(',')[0].strip()) for x in str_data.split()]
        spectrum_intensity = [int(x.split(',')[1].strip()) for x in str_data.split()]
        spectrum_mass.append('||')
        spectrum_intensity.append('||')
        spectra_files = spectra_files[spectra_files.index(i)+1:]

目前我让它遍历文件名称列表,然后将它们的数据添加到列表spectrum_mass和spectrum_intensity。但是,这不起作用,它只是添加列表中最后一个文件的数据。有什么建议么?

4

2 回答 2

1

几点注意事项:

  • 扩展您在循环之外构建的列表。
  • 您在迭代时不需要更改您迭代的列表。我指的是spectra_files您在循环结束时更改的列表(spectra_files = spectra_files[spectra_files.index(i)+1:]

.

spectrum_mass = []
spectrum_intensity = []
for i in spectra_files:                                           
    with open(i, 'r') as f:
        numbers = []  #list to store all mass spectrum data directly from file before being processed
        for line in f:
            if line[0].isdigit():  #skips header in file
                numbers.append(line)

        str_data = ''.join(numbers)
        #creates list for the mass and list for the intensity. to be used for plotting
        spectrum_mass.extend(int(x.split(',')[0].strip()) for x in str_data.split())
        spectrum_intensity.extend(int(x.split(',')[1].strip()) for x in str_data.split())
        spectrum_mass.append('||')
        spectrum_intensity.append('||')
于 2015-07-24T17:46:36.710 回答
0

在循环外创建列表。对于每次迭代,列表都会被覆盖。还有一个建议;当您提出问题时;请跳过与文件中的行无关的代码做一个最小的虚拟代码。它使跟踪和回答变得更加容易。

在您的代码中,您仍然没有同时在 2 个文件中“阅读”。您正在循环读取一个文件,并同时在 2 个列表中“写入”。

我希望它有帮助

于 2015-07-24T17:56:14.597 回答