重命名txt文件。已编辑的版本:[错误183]当该文件已存在时无法创建文件

时间:2017-03-09 02:34:40

标签: python python-2.7 file-rename windowserror

我正在使用python 2.7x。我对python很新,非常感谢你的帮助。我已经阅读了很多帖子,包括下面显示的那些帖子,仅列举了一些关于此错误的信息:

WindowsError: [Error 32] The process cannot access the file because it is being used by another process: 'new.dat' - >我的文件关闭指令已经结束了。

python 2 [Error 32] The process cannot access the file because it is being used by another process - >我不能使用shutil,因为我正在使用的python程序中有一些错误,我无法编辑该路径,因为我的计算机受到管理员保护。

Rename Files in Python - >根据建议后,我收到了NameError:名称'rename'未定义...:/

等等。

在尝试纠正我的代码后,我仍然遇到同样的错误。

我想要做的是:我读取目录中的文件,如果任何文件包含特定字符串,我会重命名文本文件 (即first.txt到firstfound.txt。)

编辑版: 在重命名文件之前,我尝试移动abc.close():

import os

fname = raw_input("Enter file name: ")
#fill in file directory here
abc = open(fname)
for line in abc:
 if not line.find("scramble") : 
  continue
 oldfile = fname
abc.close() 
if oldfile == fname:
 for title in fname:
    endname = title.find('.txt')
    oldtitle = title[:endname]
    newfile = oldtitle +"found.txt"
    os.rename(oldfile,newfile)

但是我在最后一行有这个错误。 os.rename(的oldfile,newfile中) WindowsError:[错误183]当该文件已存在时无法创建文件。我的文件夹中没有新名称的文件。 非常感谢您的建议!

编辑版本2:我还尝试了另一组代码,但它给了我WindowsError:[错误5]访问被拒绝。我是否知道是否有这样的事情我无法重命名txt文件,因为我没有管理员权限?谢谢!

import os

fname = raw_input("Enter file name: ")
#fill in file directory here
abc = open(fname)
for line in abc:
 if not line.find("scramble") : 
  continue
 oldfile = fname
abc.close() 

if (oldfile == fname): #+'/' +  "a.txt"
 for title in fname:
    endname = title.find('.txt')
    oldtitle = title[:endname]
    new_file = oldtitle +'/' +  "a.txt"
    os.rename(fname,new_file)

INITIAL版本:我得到的错误是在os.rename行。 “WindowsError:[错误32]进程无法访问该文件,因为它正由另一个进程”

使用

我的整个程序代码如下所示:

import os

fname = raw_input("Enter file name: ")
#fill in file directory here
abc = open(fname)
for line in abc:
 if not line.find("scramble") : 
  continue
 old_file = fname
 for title in fname:
    endname = title.find('.txt')
    oldtitle = title[:endname]
    new_file = oldtitle +'/' +  "found.txt"
    os.rename(old_file,new_file) ##WindowsError: [Error 32] The process cannot access the file because it is being used by another process
abc.close() 

我不明白为什么这个错误仍然存​​在。 (我已关闭所有文件和文件夹)。非常感谢你!

1 个答案:

答案 0 :(得分:1)

问题很可能是由于您的代码中的open()调用造成的。 python中的open()函数打开文件文件进行读/写,因此如果你打开一个文件,那么当它在另一个位置打开时你不能对它进行重命名。

相反,你应该打电话给

function filterByAlbum(){

  const albumFilter = entry => 
           (this.albumFilter == 'All') || 
           (this.albumFilter == 'Neither' && !entry.relatedRecording) ||
           (entry.relatedRecording === this.albumFilter);

  const yearFilter = entry => 
         (this.yearFilter == 'Year') || 
         (new Date(entry.postDate.date).getFullYear() == this.yearFilter);

  const reducer = (accumulator, entry) => {
    if (albumFilter(entry) && yearFilter(entry))
      accumulator.push(entry);
    return accumulator;
  }

  return this.pressEntries.reduce(reducer, []);
}

new Vue({
  el: "#app",
  data() {
    return {
        pressEntries,
        albumFilter: 'All',
        yearFilter: 'Year'
    }
  },
  computed:{
    filterByAlbum
  }
})

重命名文件之前。

有关文件I / O的更多信息,请参阅this link