среда, 14 сентября 2011 г.

работа с файлами

Мне очень понравилась данная статья .


Работа с файлами

Эта маленькая статья на простых примерах покажет, как работать с файлами ипользуя стандартную библиотеку Python. (Некоторые примеры требуют Python 2.3 и выше).
Для работы с файлами в основном применяется модуль os. Далее, для перемещения и копирования файлов мы будем использовать модуль shutil, для сравнения файлов - filecmp, для поиска по образцу - glob . А пока импортируем os.
import os
Обработка пути к файлу
os.path.join(r'c:\home', 'index.html') # соединение пути
# возвращает r'c:\home\index.html'
os.path.split(r'c:\home\index.html') # разделение пути
# возвращает (r'c:\home', 'index.html')
Как узнать, существует ли данный путь?
path = 'index.html'
if os.path.exists(path):
print path, ' exists'
Как определить, данный путь - это файл или директория?
if os.path.isfile(path):
print path, ' is file'
elif os.path.isdir(path):
print path, ' is directory'
Получаем свойства файла.
from datetime import datetime # для преобразования даты в приемлемый формат
size = os.path.getsize(path) # размер файла в байтах
ksize = size//1024 # размер в килобайтах
atime = os.path.getatime(path) # дата последнего доступа в секундах с начала эпохи
mtime = os.path.getmtime(path) # дата последней модификации в секундах с начала эпохи
print 'Size: ', ksize, ' KB'
print 'Last access date: ', datetime.fromtimestamp(atime)
print 'Last modification date: ', datetime.fromtimestamp(mtime)
Стандартные операции с файлами
import shutil
os.rename('index.html','index2.html') # переименовать
shutil.copy('index2.html','index.html') # копировать
shutil.move('index2.html', 'index3.html') # переместить
os.remove('index3.html') # удалить
Сравнение двух файлов
import filecmp
eq = filecmp.cmp('index.html', 'index3.html') # сравнить файлы
if eq:
print 'equal'
else:
print 'not equal'
Обработка всех файлов в директории
dir = 'c:\home'
names = os.listdir(dir) # список файлов и поддиректорий в данной директории
for name in names:
fullname = os.path.join(dir, name) # получаем полное имя
if os.path.isfile(fullname): # если это файл...
print fullname # делаем что-нибудь с ним
Обработка всех файлов в директории рекурсивно (включая все поддиректории)
dir = 'c:\home'
for root, dirs, files in os.walk(dir): # пройти по директории рекурсивно
for name in files:
fullname = os.path.join(root, name) # получаем полное имя файла
print fullname # делаем что-нибудь с ним
Здесь os.walk - это итератор, который проходит по директориям рекурсивно, и возвращает для каждой директории кортеж из трёх значений:
root - имя текущей директории

dirs - имена поддиректорий в текущей директории

files - имена файлов в текущей директории
Получение списка файлов, совпадающих с образцом
import glob
names = glob.glob('c:\home\*') # все файлы и поддиректории в "с:\home"
names = glob.glob('c:\home\*.txt') # только с расширением "txt"
for name in names:
if os.path.isfile(name): # если это файл (а не директория)
print name # делаем что-нибудь с ним
Вот наверно и все основные операции с файлами. А если Вам понадобится произвести какие-то другие действия над файлами, обратитесь к стандартной документации Python.

1 комментарий:

  1. Я не мог поверить, что существует настоящий онлайн-кредитор, который может быть таким добрым и честным, как Бенджамин Ли, который предоставил мне ссуду в 2 миллиона евро для выполнения моего проекта, который так долго ждал своего исполнения, но с С помощью офицера Бенджамина все было легко для меня. Я скажу вам связаться с кредитным офицером Бенджамином Ли по адресу 247officedept@gmail.com

    ОтветитьУдалить