2014-01-28 2 views
0

Я пишу функцию для копирования каждой строки текстового файла в новую, если только строка не является специально обозначенной, и в этом случае она изменит часть этой строки, а затем сохраните строку, как обычно, в новый файл.Python: [WinError 32] issue

Я прошу об этом, потому что я попытался использовать исправления, указанные в this question, но я все еще получаю ту же ошибку.

Чтобы ответить на возможные вопросы:

  • У меня есть файл с именем «save.txt», который был переименован в «oldsave.txt» для того, чтобы создать новый файл с именем «save.txt».
  • 'rN' - целое число, генерируемое другой функцией.
  • Все библиотеки мне нужны были импортированы, прежде чем функция называется

Вот функция:

os.rename(file1,'oldsave.txt') 
oldSave = open(file1) 
newSave = open('save.txt','a') 

count = 1 
for line in oldSave:  
    if count != rN: 
     newSave.write(line) 
    else: 
     chosen_album = [] 
     line = line.strip() 
     chosen_album.append(line.split('|')) 
     chosen_album[4] += 1 
     newSave.write(chosen_album) 
    count += 1 
oldSave.close() 
newSave.close() 
os.rename('newsave.txt','save.txt') 
os.remove('oldsave.txt') 

Это ошибка, я получаю, когда я запустить его:

PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'oldsave.txt' 

Насколько я знаю, проблема заключается в открытии/закрытии/переименовании файлов.

+0

Вы можете включать в себя полный отслеживающий? Я не могу определить, есть ли проблема в начале или конце вашего сценария. – mhlester

+0

Это строки 2-3, как указано в приведенном выше блоке кода. – Frigd

ответ

0

Если я правильно понял ваш вопрос, file1является'save.txt' так ...

oldSave = open(file1) 
newSave = open('save.txt','a') 

означает, что вы пытаетесь сделать:

oldSave = open('save.txt') 
newSave = open('save.txt','a') 

который я считаю, это не то, что вы хотите , То, что вы которые пытаются сделать это:

oldSave = open('oldsave.txt') 
newSave = open('save.txt','a') 

(я жёстко строки Используйте любой переменные являются подходящими для вашей программы.)

+0

Я реализовал ваше исправление, и похоже, что я больше не получаю эту ошибку. Большое спасибо! – Frigd

+0

С удовольствием помогли. Не забудьте [принять ответ] (http://stackoverflow.com/help/someone-answers), если вы удовлетворены. – mhlester

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