Прочитать объединенный файл в python - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть файл (merged-control.txt), в который я объединял содержимое других файлов. В нем объединено более 10000 файлов, и структура выглядит следующим образом:

control-part1.txt
1  10      12
1  34      44
2   1      -3
3   4     -10.3
3   3.390   4
4  43       3
control-part2.txt
1 -90.3     2
2  32       3
3  43     -20
4   2       2

До того, как я прочитал каждый файл (control-part1.txt, control-part2.txt, ...) отдельно (они находятся в одной папке), и я использовал:

filePath = "/path/to/control/files"
file_counter = 0
for filename in glob.glob(os.path.join(filePath, 'control*.txt')):
    file_counter += 1
    #print filename 
    shortname = filename.strip().split('/')[-1]
    types = shortname.strip().split('-')[0]
    print types
    numbers_table=open(filename,'r')
    for line in numbers_table:
        print line
        indexes = line[0].strip()
        firsts = line[1].strip()
        seconds = line[2].strip()

Поскольку сложнее было хранить ~ 10000 файлов в одной папке, я объединил их.

Я попытался разбить строки с помощью partition:

with open('merged-control.txt') as f:
    chunks = []
    for line in f:
        chunk = line.strip().partition("control")
        print chunk[0]
        chunks.append(chunk)
    print chunks

И это дает:

1  10      12
1  34      44
2   1      -3
3   4     -10.3
3   3.390   4
4  43       3

1 -90.3     2
2  32       3
3  43     -20
4   2       2
[('', 'control', '-part1.txt'), ('1  10      12', '', ''), ('1  34      44', '', ''), ('2   1      -3', '', ''), ('3   4     -10.3', '', ''), ('3   3.390   4', '', ''), ('4  43       3', '', ''), ('', 'control', '-part2.txt'), ('1 -90.3     2', '', ''), ('2  32       3', '', ''), ('3  43     -20', '', ''), ('4   2       2', '', '')]

Теперь файлы не отделены друг от друга, и я не могу добраться до индекса, первого столбца и второго столбца каждого файла.

Как я могу прочитать каждый файл, когда они находятся в одном файле?

1 Ответ

0 голосов
/ 09 апреля 2020

Похоже, что у вас уже есть все данные, хранящиеся в блоках. Ваша последняя строка "print chunks" показывает это. Поскольку вы объединили все свои файлы необработанных данных в один файл для удобства управления файлами, этот подход поместил все ваши данные в одну коренастую переменную.

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

for c in chunks:
 if c[2] != '': print c[2]
 else:
  theData = c[0].split()
  print theData
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...