2014-01-28 28 views
0

我正在写一个函数,将文本文件的每一行复制到一个新文件中,除非该行是特别指定的行,在这种情况下,它将更改该行的一部分,然后像正常一样将行保存到新文件。Python:[WinError 32] issue

我在问这是因为我尝试使用this question中给出的修复程序,但我仍然收到相同的错误。

要回答可能提出的问题:

  • 我有一个名为“save.txt的”文件,该文件是为了创建一个名为“save.txt的”一个新的文件重命名为“oldsave.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