2016-07-04 3 views
0

У меня есть два файла, открытых в системе. Пользователь вводит некоторый ввод, а затем скрипт выбирает, какой файл закрыть. Я должен закрыть один из файлов.Python 3 - только переименовывать файлы, которые в настоящее время открыты

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

Вот код:

with open("file1.csv","r") as a, open ("file2.csv","r") as b: 

read_file_no_1 = csv.reader(a); read_file_no_2 = csv.reader(b) 

Question=input(Questions[0]).title() 
if Question =='something': read_file_no_1.close() 
elif Question == 'something_else': read_file_no_2.close() 
else: print("Nul") 

for i,x,y in zip(range(1,23),read_file_no_2,_file_no_1):   
    Question=input(Questions[i].format(Question,x)) 
    if any(iterator in Question.split() for iterator in (x,y)): 
     print(Question) 
    else: 
     print("{} {}".format(str(Question),"unknown") 

Любая помощь будет оценена.

спасибо.

Мастер-чип

Edit:

Я загрузил весь код. Это некрасиво, это должно быть доказательством концепции.

+0

Я не понимаю почтовый логики вообще, что такое '' read_file_no_2' NAND read_file_no_1'? –

+0

Это не «код». Это ** часть ** кода. Я не вижу там никакого файла или операций для закрытия файла. Пожалуйста, дайте более полный пример того, что вы делаете, ваше попытка решения и то, как он «не работает». – Bakuriu

+0

read_file_no_1 и 2 являются файлами. Часть диапазона предназначена только для того, чтобы выбрать соответствующий элемент из списка. –

ответ

0

только создать объект CSV после того, как пользователь выбирает:

with open("file1.csv","r") as a, open ("file2.csv","r") as b: 
    Question=input(Questions[0]).title() 
    if Question =='something': 
     r = csv.reader(b) 
     a.close() 
    elif Question == 'something_else': 
     b.close() 
     r = csv.reader(a) 
    else: 
     r = csv.reader(other) 

    for i,x,y in zip(range(1,23), r): 
+1

Отлично. Спасибо. –

+0

Не беспокойтесь, вы можете использовать логику как 'if a.closed()', но намного проще просто создать только один объект-читатель –

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