从同一目录读入两个文件
Read in two files from same directory
我正在 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。然而,这不起作用,它只是添加列表中最后一个文件的数据。有什么建议吗?
一些注意事项:
- 扩展您在循环外部构建的列表。
- 您在迭代时不需要更改您迭代的列表。我指的是您在循环结束时更改的
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('||')
在循环外创建列表。对于每次迭代,列表都会被覆盖。还有一个建议;
当你提问时;请跳过不相关的代码,你在做什么与文件中的行做一个最小的虚拟代码。它使跟踪和回答变得更加容易。
在您的代码中,您仍然没有同时 "Reading" 在 2 个文件中。您一次循环读取一个文件,并同时读取 2 个列表中的 "Writing"。
希望对你有帮助
我正在 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。然而,这不起作用,它只是添加列表中最后一个文件的数据。有什么建议吗?
一些注意事项:
- 扩展您在循环外部构建的列表。
- 您在迭代时不需要更改您迭代的列表。我指的是您在循环结束时更改的
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('||')
在循环外创建列表。对于每次迭代,列表都会被覆盖。还有一个建议; 当你提问时;请跳过不相关的代码,你在做什么与文件中的行做一个最小的虚拟代码。它使跟踪和回答变得更加容易。
在您的代码中,您仍然没有同时 "Reading" 在 2 个文件中。您一次循环读取一个文件,并同时读取 2 个列表中的 "Writing"。
希望对你有帮助