Всегда ли мне нужно указывать мой текущий рабочий каталог в Python?

Я работаю через проект renameDates в Automate the Boring. Предполагается, что даты совпадений будут отформатированы по-американски и переведены в европейский формат.

Что я не понимаю в этом коде, так это как он находит правильный каталог?

Я не могу найти никакого кода, который устанавливает текущий рабочий каталог в файл, в котором он мне нужен, но сценарий кажется написанным, предполагая, что текущий рабочий каталог по умолчанию находится там, где он должен работать.

Это что-то простое, например, запуск сценария из файла, в котором я хочу искать регулярные выражения, заставит Python установить этот файл как CWD?

#! python3
# renameDates.py - renames filenames with American MM-DD-YYYY date format
# to European DD-MM-YYYY.

import shutil, os, re

# Create a regex that matches files with the American 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)-             # on or two digits for the day
    ((19|20)\d\d)               #four digits for the year
    (.*?)$                      # all text after the date
    """, re.VERBOSE)
# loop over the files in the working directory.
for amerFilename in os.listdir('.'):
    mo=datePattern.search(amerFilename)

    # Skip files without a date.
    if mo==none:
        continue

    # Get the different parts of the filename.
    beforePart=mo.group(1)
    monthPart=mo.group(2)
    dayPart=mo.group(4)
    yearPart=mo.group(6)
    afterPart=mo.group(8)

# Form the European-style filename.
euroFilename=beforePart+dayPart+'-'+monthPart+'-'+yearPart+afterPart


# Get the full, absolute file paths.
absWorkingDir=os.path.abspath('.')
amerFilename=os.path.join(absWorkingDir, amerFilename)
euroFilename=os.path.join(absWorkingDir, euroFilename)

# Rename the files.
print('Renaming "%s" to "%s%...' % (amerFilename, euroFilename))
#shutil.move(amerFilename,euroFilename)  #uncomment after testing

1 ответ

Эй, ты запускаешь свой код из Терминала или интерпретатора? Использует текущий рабочий каталог. Обычно это каталог, в котором вы находились до запуска интерпретатора script / python... Вы можете проверить свой текущий рабочий каталог с помощью этого кода... Надеюсь, это поможет вам:

import os
print(os.getcwd())

Вы можете изменить рабочий каталог с помощью:

os.chdir(path)

Вы можете создать текстовый файл с датой в качестве имени, например 11-11-2011, в своем рабочем каталоге, и когда вы запустите программу, вы увидите, что имя изменилось

Другие вопросы по тегам