-1

これは、カイルとジョンのすべての出現箇所をそれぞれマイクとジムに置き換える私のコードです。

import os
import fileinput
import sys


rootdir ='C:/Users/sid/Desktop/app'
searchTerms={"kyle":"mike","john":"jim"}

def replaceAll(file,searchExp,replaceExp):
    for line in fileinput.input(file, inplace=1):
        if searchExp in line:
            line = line.replace(searchExp,replaceExp)
        sys.stdout.write(line)

for subdir, dirs, files in os.walk(rootdir):
    for file in files:
            path=subdir+'/'+file
            for key,value in searchTerms.items():
                replaceAll(path,key,value)

これは、私が作成したテストディレクトリではうまく機能していました。rootdir を実際の Java プロジェクト ディレクトリに変更すると、

Traceback (most recent call last):
  File "C:\Users\sid\Desktop\test_iterator.py", line 19, in <module>
    replaceAll(path,key,value)
  File "C:\Users\sid\Desktop\test_iterator.py", line 10, in replaceAll
    for line in fileinput.input(file, inplace=1):
  File "C:\Python33\lib\fileinput.py", line 261, in __next__
    line = self.readline()
  File "C:\Python33\lib\fileinput.py", line 330, in readline
    os.rename(self._filename, self._backupfilename)
FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'C:/Users/sid/Desktop/app/pom.template.xml.bak'         

誰かがこのエラーが発生する理由を説明してください。os.rename() FileExistsError に関する投稿を読みましたが、理解できませんでした。詳細に説明してください。

4

1 に答える 1