Шаг 168.
Основы языка Python.
Работа с файлами и каталогами. Функции для работы с файлами
На этом шаге мы рассмотрим функции, позволяющие копировать, переносить, переименовывать и удалять файлы.
Для копирования и перемещения файлов предназначены следующие функции из модуля shutil:
- copyfile (<Копируемый файл>, <Куда копируем>) - позволяет скопировать содержимое файла в другой файл. Никакие метаданные (например, права доступа) не
копируются. Если файл существует, то он будет перезаписан. Если файл не удалось скопировать, возбуждается исключение OSError или одно из исключений, являющихся подклассом этого
класса. Пример:
>>> import shutil # Подключаем модуль
>>> shutil.copyfile (r"file.txt", r"file2.txt")
'file2.txt'
>>> # Путь не существует:
>>> shutil.copyfile(r"file.txt", r"C:\book2\file2.txt")
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
shutil.copyfile(r"file.txt", r"C:\book2\file2.txt")
File "C:\Python34\lib\shutil.py", line 109, in copyfile
with open(dst, 'wb') as fdst:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\book2\\file2.txt'
Исключение FileNotFoundError является подклассом класса OSError и возбуждается, если указанный файл не найден. Более подробно классы исключений, возбуждаемых при
файловых операциях, мы рассмотрим позднее.
Начиная с Python 3.3, функция copyfile() в качестве результата возвращает путь файла, куда были скопированы данные;
- copy (<Копируемый файл>, <Куда копируем>) - позволяет скопировать файл вместе с правами доступа. Если файл существует, то он будет перезаписан.
Если файл не удалось скопировать, возбуждается исключение OSError или одно из исключений, являющихся подклассом этого класса. Пример:
>>> shutil.copy(r"file.txt", r"file3.txt")
'file3.txt'
Начиная с Python 3.3, функция сору() в качестве результата возвращает путь скопированного файла;
- copy2 (<Копируемый файл>, <Куда копируем>) - позволяет скопировать файл вместе с метаданными. Под метаданными здесь понимается
информация, которая хранится практически в любом типе файла. Она может включать имя пользователя, название компании или организации, имя компьютера, имя сервера в сети или диск, на котором сохранен файл; персональные комментарии, имена предыдущих авторов, время создания и время последнего изменения, номер версии или редакции.
Если файл существует, то он будет перезаписан. Если файл не удалось скопировать, возбуждается исключение OSError или одно из исключений, являющихся подклассом этого класса. Пример:
>>> shutil.copy2(r"file.txt", r"file4.txt")
'file4.txt'
Начиная с Python 3.3, функция сору2() в качестве результата возвращает путь скопированного файла;
- move (<Путь к файлу>, <Куда перемещаем>) - перемещает файл в указанное место с удалением исходного файла. Если файл существует, то он будет перезаписан.
Если файл не удалось переместить, возбуждается исключение OSError или одно из исключений, являющихся подклассом этого класса. Пример перемещения файла
file4.txt в каталог C:\book\test:
>>> shutil.move(r"file4.txt", r"C:\book\test")
'C:\\book\\test\\file4.txt'
Начиная с Python 3.3, функция move() в качестве результата возвращает путь перемещенного файла.
Для переименования и удаления файлов предназначены следующие функции из модуля os:
- rename(<Старое имя>, <Новое имя>) - переименовывает файл. Если файл не удалось переименовать, возбуждается исключение OSError или одно из
исключений, являющих ся подклассом этого класса. Пример переименования файла с обработкой исключений:
>>> import os # Подключаем модуль
>>> try:
os.rename(r"file3.txt", "file4.txt")
except OSError:
print ("Файл не удалось переименовать")
else:
print ("Файл успешно переименован")
Файл успешно переименован
- remove(<Путь к файлу>) и unlink (<Путь к файлу>) - позволяют удалить файл. Если файл не удалось удалить, возбуждается исключение OSError или одно из исключений,
являющихся подклассом этого класса. Пример:
>>> os.remove (r"file2.txt")
>>> os.unlink (r"file4.txt")
На следующем шаге мы закончим изучение этого вопроса.
Предыдущий шаг
Содержание
Следующий шаг