2017-04-25 10 views
0

は、私は私が助けを探していますPythonのファイルリネームプログラム - 以下のコードでABSPATH問題

日付/さ/ユーザ/ XXX /ドキュメント元のファイルと同じディレクトリに保存するために名前を変更したファイルを取得することはできません理由を説明する?

#! usr/bin/env python3 
# renameDates.py - Renames filenames with America MM-DD-YYYY date format 
# to European DD-MM-YYYY 

import shutil, os, re 

#create a regex that matches files with the America date format. 
datePattern = re.compile(r'''^(.*?) # all text before the date 
     ((0|1)?\d)-     #one or two digits for the month 
     ((0|1|2|3)?\d)-    #one or two digits for the day 
     ((19|20)\d\d)    #four digits for the year 
     (.*?)$      #all text after the date 
     ''', re.VERBOSE) 

for amerFilename in os.listdir('/Users/xxx/Documents/Dates'): 
    mo = datePattern.search(amerFilename) 
    if mo == None: 
     continue 

    beforePart = mo.group(1) 
    monthPart = mo.group(2) 
    dayPart = mo.group(4) 
    yearPart = mo.group(6) 
    afterPart = mo.group(8) 
    euroFilename = beforePart + dayPart + '-' + monthPart + '-' + yearPart + afterPart 
    absWorkingDir = os.path.abspath('./Dates') 
    amerFilename = os.path.join(absWorkingDir, amerFilename) 
    print('Renaming "%s" to :%s:...' % (amerFilename, euroFilename)) 
    shutil.move(amerFilename, euroFilename) #uncomment after testing 

答えて

1

あなたfor声明の中で、特定のディレクトリ( '/ユーザ/ XXX /ドキュメント/日付')からamerFilenameファイルを引っ張っています。しかし、ファイル名として定義されているeuroFilenameに移動しますが、同じ特定のディレクトリ内では定義されません。

あなたがあなたの最後の行を変更した場合:

shutil.move(amerFilename, os.path.join('/Users/xxx/Documents/Dates', euroFilename)) 

...あなたが欲しいものを手に入れるのですか?

+0

こんにちはPedroさん、この回答が問題を解決した場合は、(左側のチェックマークをクリックして)それを受け入れることができますか? –

+0

はい、これが役に立ちました。ありがとう、私はちょうどあなたが素晴らしい説明だったプログラミングを始めています。 – Pedro

関連する問題