2014-01-28 74 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