2013-04-19 3 views
0

У меня есть 3 файла, которые содержат списки других файлов в каталоге. Я пытаюсь взять файлы, которые находятся в списках, и скопировать их в новый каталог. Я думаю, что я пытаюсь открыть лучший способ открыть файлы, поскольку я получаю IOError: [Errno 2] Нет такого файла или каталога. У меня была игра с использованием, чтобы открыть файлы, но я не мог заставить свою работу работать. Вот мой код и немного одного из файлов, которые я пытаюсь прочитать.Открытие и выполнение операции над несколькими файлами

import shutil 
import os 

f=open('polymorphI_hits.txt' 'polymorphII_hits.txt' 'polymorphIII_hits.txt') 
res_files=[line.split()[1] for line in f] 
f=close() 

os.mkdir(os.path.expanduser('~/Clustered/polymorph_matches')) 

for file in res_files: 
    shutil.copy(file, (os.path.expanduser('~/Clustered/polymorph_matches')) + "/" + file) 

PENCEN.res  2.res number molecules matched:  15  rms deviation 0.906016 
PENCEN.res  3.res number molecules matched:  15  rms deviation 1.44163 
PENCEN.res  5.res number molecules matched:  15  rms deviation 0.867366 

Edit: Я использовал АЙАС код ниже, чтобы исправить это, но теперь получить IOError: [Errno 2] Нет такого файла или каталога: «р». Я предполагаю, что он читает первый символ имени файла и не работает там, но я не могу понять, почему.

res_files = [] 
for filename in 'polymorphI_hits.txt' 'polymorphII_hits.txt' 'polymorphIII_hits.txt': 
    res_files += [line.split()[1] for line in open(filename)] 
+0

Скопировать/вставить не удается? Проверьте ответ еще раз, и вы должны заметить запятые, разделяющие имена файлов. – Aya

ответ

1

Python рассматривает последовательные строковые константы в виде одной строки, поэтому строка ...

f=open('polymorphI_hits.txt' 'polymorphII_hits.txt' 'polymorphIII_hits.txt') 

... на самом деле интерпретируется как ...

f=open('polymorphI_hits.txtpolymorphII_hits.txtpolymorphIII_hits.txt') 

... который предположительно относится к несуществующему файлу.

Я не верю, что есть способ использовать open(), чтобы открыть несколько файлов в одном вызове, так что вам нужно изменить ...

f=open('polymorphI_hits.txt' 'polymorphII_hits.txt' 'polymorphIII_hits.txt') 
res_files=[line.split()[1] for line in f] 
f=close() 

... к чему-то больше нравится ...

res_files = [] 
for filename in 'polymorphI_hits.txt', 'polymorphII_hits.txt', 'polymorphIII_hits.txt': 
    res_files += [line.split()[1] for line in open(filename)] 

Остальная часть кода выглядит нормально.

+0

Я вижу, где я ошибся, спасибо за помощь! Я все еще получаю: IOError: [Errno 2] Нет такого файла или каталога: 'p', и я не уверен, откуда это взялось. – Jsg91

+0

@ Jsg91 Вам нужно добавить свой новый код к вопросу. – Aya

Смежные вопросы