2

さまざまなサブフォルダーを含むフォルダーがあります。すべてのファイルを反復処理し、John と Jose の出現を確認して、Mikel と Mourinho にそれぞれ置き換える必要があります。

これは私が Python で書いたスクリプトです。正常に動作していますが、ファイルに遭遇する.gifとエラーが発生し、それ以上繰り返されません。

理由を教えてください。

エラーは

Traceback (most recent call last):
  File "C:\Users\sid\Desktop\script.py", line 33, in <module>
    os.chmod(path ,stat.S_IWRITE)
FileNotFoundError: [WinError 2] The system cannot find the file specified:'C:\Users\sid\Desktop\test\\images/ds_dataobject.gif.bak'

私のコード:

import os,stat
import fileinput
import sys

rootdir ='C:\Users\spemmara\Desktop\test'
searchTerms={"John":"Mikel", "Jose":"Mourinho"}

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
        print(path)
        os.chmod(path ,stat.S_IWRITE)
        for key,value in searchTerms.items():
            replaceAll(path,key,value)
        os.chmod(path,stat.S_IREAD)
4

2 に答える 2

5

生の文字列またはダブルブラックスラッシュを使用します\\:

なし\\または生の文字列'\t'はタブ スペースに変換されます。

>>> print 'C:\Users\spemmara\Desktop\test'
C:\Users\spemmara\Desktop   est

生の文字列を使用:

>>> print r'C:\Users\spemmara\Desktop\test'
C:\Users\spemmara\Desktop\test

ダブルブラックスラッシュ:

>>> print 'C:\\Users\\spemmara\\Desktop\\test'
C:\Users\spemmara\Desktop\test

アップデート:

「C:\Users\sid\Desktop\test\images/ds_dataobject.gif.bak」

混合しようとしているエラーを単一のパスで見る\/、より適切に使用できますos.path.join:

path = os.path.join(subdir, file)
于 2013-11-04T11:55:06.160 に答える