Python продолжает печатать первый индекс цикла for - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть данные в двух каталогах, и я использую for loop для чтения файлов из обеих папок.

path_to_files = '/home/Desktop/computed_2d/'
path_to_files1 = '/home/Desktop/computed_1d/'

for filen in [x for x in os.listdir(path_to_files) if '.ares' in x]:
    df = pd.read_table(path_to_files+filen, skiprows=0, usecols=(0,1,2,3,4,8),names=['wave','num','stlines','fwhm','EWs','MeasredWave'],delimiter=r'\s+')

    for filen1 in [x for x in os.listdir(path_to_files1) if '.ares' in x]:
        df1 = pd.read_table(path_to_files1+filen1, skiprows=0, usecols=(0,1,2,3,4,8),names=['wave','num','stlines','fwhm','EWs','MeasredWave'],delimiter=r'\s+')

        print(filen,filen1)

Теперь происходит то, что происходит, когда вы пытаетесь напечатать имена файлов, тогда они продолжают печататьимена навсегда.Таким образом, он в основном берет первую итерацию из первого цикла, а затем печатает ее со всей итерацией второго цикла. Я не понимаю, почему это происходит.

Но я хочу сделать, я хочувыведите первую итерацию первой loop с первой итерацией второй for loop

Поскольку имена файлов в обеих папках совпадают. Так что, когда я делаю печать, желаемый результат должен выглядеть примерно такэто:

(txt_1.txt,txt_1.txt)
(txt_2.txt,txt_2.txt)
(txt_3.txt,txt_3.txt)
(txt_4.txt,txt_4.txt)

Где я совершаю ошибку ??

1 Ответ

0 голосов
/ 12 сентября 2018

Если я правильно понимаю ваш вопрос, вы, похоже, хотите напечатать пары файлов из path_to_files и path_to_files1.Поскольку вы вкладываете for loop, для каждой итерации вложенного for loop, filen не изменится.

Я думаю, вам может понадобиться что-то более похожее на это:

path_to_files = '/home/Desktop/computed_2d/'
path_to_files1 = '/home/Desktop/computed_1d/'

filelistn = [x for x in os.listdir(path_to_files) if '.ares' in x]
filelist1 = [x for x in os.listdir(path_to_files1) if '.ares' in x]

for filen, filen1 in zip(filelistn, filelist1):
    df = pd.read_table(path_to_files+filen, skiprows=0, usecols=(0,1,2,3,4,8),names=['wave','num','stlines','fwhm','EWs','MeasredWave'],delimiter=r'\s+')
    df1 = pd.read_table(path_to_files1+filen1, skiprows=0, usecols=(0,1,2,3,4,8),names=['wave','num','stlines','fwhm','EWs','MeasredWave'],delimiter=r'\s+')

    print(filen,filen1)

Для примера ввода:

filelistn = ['a.ar', 'b.ar']
filelist1 = ['c.ar', 'd.ar']

Я получаю следующий вывод:

('a.ar', 'c.ar')
('b.ar', 'd.ar')
...