Несколько примеров работы с файлами:
# -*- coding: cp1251 -*-
def _print(argStr):
print unicode(argStr, 'cp1251')
# открытие и чтение текстового файла построчно
for line in open("C:\\boot.ini"):
_print(line)
# ведение лога
logfile = open("C:\\Temp\\test.txt", "w")
print>>logfile, "Какой-то текст"
print>>logfile, "Ещё какой-то текст"
logfile.close()
# проверка, открыт ли файл
print logfile.closed
# обработка ошибки открытия файла
try:
myfile = open("несуществующий файл")
except IOError, err:
print err.strerror
# создание и использование временного файла
# файл автоматически удаляется, как только он будет закрыт
import tempfile
myfile = tempfile.TemporaryFile(bufsize = 0)
print myfile.name # полный путь
for i in range(10):
print>>myfile, i
myfile.seek(0)
_print("Сейчас во временном файле:\n" + myfile.read())
myfile.close()
# копирование файлов
import shutil
shutil.copyfile("C:\\boot.ini", "C:\\Копия boot.ini")
# удаление файла
import os
os.remove("C:\\Копия boot.ini")
# перезапись содержимого файла
myfile = open("C:\\Temp\\test.txt", "w")
print>>myfile, "текст"
myfile.close()
# собственно перезапись
myfile = open("C:\\Temp\\test.txt", "r+")
data = myfile.read()
data += "добавленный текст"
myfile.seek(0, 0)
myfile.write(data)
myfile.truncate(myfile.tell())
myfile.close()
[_print(line) for line in open("C:\\Temp\\test.txt")]
os.remove("C:\\Temp\\test.txt")
# -*- coding: cp1251 -*-
import os
import random
import linecache
import stat
import time
import datetime
import shutil
def _print(argStr):
print unicode(argStr, 'cp1251')
# чтение строк файла в обратном порядке
for line in reversed(open("C:\\boot.ini").readlines()):
print line
# чтение строк файла в случайном порядке
lines = open("C:\\boot.ini").readlines()
random.shuffle(lines)
for line in lines:
print line
# чтение нужной строки файла по номеру
line = linecache.getline("C:\\boot.ini", 2) # вторая строка
print line
line = open("C:\\boot.ini").readlines()[1] # вторая строка
print line
# чтение бинарного файла
bmp_file = open("C:\WINDOWS\Web\Wallpaper\Безмятежность.bmp", "rb")
buff = bmp_file.read(10) # первые 10 байт
print buff
print bmp_file.tell() # текущая позиция в файле.
bmp_file.seek(0) # возврат в начало файла
print bmp_file.tell()
buff = bmp_file.read(2) # первые 2 байта
print buff
bmp_file.close()
# запись бинарного файла
bmp_file = open("C:\\WINDOWS\\Web\\Wallpaper\\Безмятежность.bmp", "rb")
buff = bmp_file.read()
bmp_file.close()
bmp_file = open("C:\\Temp\\test.bmp", "wb")
bmp_file.write(buff)
bmp_file.close()
# некоторые атрибуты файлов
fstat = os.stat("C:\\boot.ini")
print stat.S_ISDIR(fstat.st_mode) # признак папки
print stat.S_ISREG(fstat.st_mode) # признак обычного файла
print fstat.st_size # размер файла, в байтах
st_atime = fstat.st_atime # время последнего доступа (число секунд с начала эпохи, 1970 г.)
a,b,c,d,e,f,g,h,i = time.localtime(st_atime)
print datetime.datetime(a,b,c,d,e,f,g)
st_mtime = fstat.st_mtime # время последней модификации
a,b,c,d,e,f,g,h,i = time.localtime(st_mtime)
print datetime.datetime(a,b,c,d,e,f,g)
st_ctime = fstat.st_ctime # время создания
a,b,c,d,e,f,g,h,i = time.localtime(st_ctime)
print datetime.datetime(a,b,c,d,e,f,g)
# установка некоторых атрибутов
open("C:\\Temp\\testfile.txt", "w").close()
# задание текущего времени последнего доступа и модификации
os.utime("C:\\Temp\\testfile.txt", None)
# задание указанного времени последнего доступа и модификации
os.utime("C:\\Temp\\testfile.txt", (1, 1))
# снятие и установка атрибута "только чтение"
os.chmod("C:\\Temp\\testfile.txt", stat.S_IREAD) # поставить read-only
os.chmod("C:\\Temp\\testfile.txt", stat.S_IWRITE) # снять read-only
# обработка ошибки удаления файла
try:
os.remove("несущестувующий файл")
except OSError, err:
_print("Ошибка удаления файла.")
# перебор файлов в каталоге
for filename in os.listdir("C:\\Temp\\Test"):
_print(filename)
# поиск файлов по маске
import glob
[_print(filename) for filename in glob.glob("c:\\*.sys")]
# рекурсивный перебор каталогов
for root, dirs, files in os.walk("C:\\Temp\\Test"):
_print("root: " + root)
if len(dirs):
_print("dirs:")
[_print(dir) for dir in dirs]
if len(files):
_print("files:")
[_print(file) for file in files]
# создание каталога
os.mkdir("C:\\Temp\\Temp")
os.mkdir("C:\\Temp\\Temp\\abcd")
# удаление каталога со всем содержимым
shutil.rmtree("C:\\Temp\\Temp") # осторожно!
# переименование файла
open("C:\\Temp\\testfile.txt", "w").close()
os.rename("C:\\Temp\\testfile.txt", "C:\\Temp\\test.txt")
# разбор пути (папка, имя файла, расширение)
print os.path.basename("C:\\boot.ini")
print os.path.dirname("C:\\boot.ini")
print os.path.split("C:\\boot.ini")
print os.path.splitext("boot.ini")
# -*- coding: cp1251 -*-
import os, sys, win32api, win32con
def _print(argStr):
print unicode(argStr, 'cp1251')
# определение каталога запущенного скрипта
print os.path.realpath(os.path.dirname(sys.argv[0]))
print os.path.realpath(os.path.dirname(sys.modules['__main__'].__file__))
# чтение атрибутов файла
attrs = win32api.GetFileAttributes("C:\\boot.ini")
if attrs & win32con.FILE_ATTRIBUTE_READONLY: # 1
_print("C:\\boot.ini - FILE_ATTRIBUTE_READONLY")
if attrs & win32con.FILE_ATTRIBUTE_HIDDEN: # 2
_print("C:\\boot.ini - FILE_ATTRIBUTE_HIDDEN")
if attrs & win32con.FILE_ATTRIBUTE_SYSTEM: # 4
_print("C:\\boot.ini - FILE_ATTRIBUTE_SYSTEM")
if attrs & win32con.FILE_ATTRIBUTE_DIRECTORY: # 16
_print("C:\\boot.ini - FILE_ATTRIBUTE_DIRECTORY")
if attrs & win32con.FILE_ATTRIBUTE_ARCHIVE: # 32
_print("C:\\boot.ini - FILE_ATTRIBUTE_ARCHIVE")
if attrs & win32con.FILE_ATTRIBUTE_NORMAL: # 128
_print("C:\\boot.ini - FILE_ATTRIBUTE_NORMAL")
if attrs & win32con.FILE_ATTRIBUTE_TEMPORARY: # 256
_print("C:\\boot.ini - FILE_ATTRIBUTE_TEMPORARY")
if attrs & win32con.FILE_ATTRIBUTE_COMPRESSED: # 2048
_print("C:\\boot.ini - FILE_ATTRIBUTE_COMPRESSED")
# установка атрибутов файла
win32api.SetFileAttributes("C:\\boot.ini",
win32con.FILE_ATTRIBUTE_HIDDEN +
win32con.FILE_ATTRIBUTE_SYSTEM +
win32con.FILE_ATTRIBUTE_ARCHIVE)
# -*- coding: cp1251 -*-
import shutil, sys, os, datetime
# каталог запущенного скрипта
path = os.path.realpath(os.path.dirname(sys.argv[0]))
# путь к файлу лога (рядом с самим скриптом, в той же папке)
logpath = path + "\\backup.log"
# открытие файла лога на добавление (если файла нет, он будет создан)
logfile = open(logpath, "a")
# записываем в лог текущие дату и время
print >> logfile, datetime.datetime.now()
print >> logfile, ''
# копирование файла поверх существующего (бэкап)
try:
shutil.copyfile("\\\\Comp1Name\\e$:\\Folder\\file.ext", "\\\\Comp2Name\\c$:\\Backups\\file.ext")
print >> logfile, "successfully"
except:
print >> logfile, sys.exc_info()[0] # тип ошибки
print >> logfile, sys.exc_info()[1] # текст ошибки
print >> logfile, '=================================================='
logfile.close()
import os
def get_version_number (filename):
info = GetFileVersionInfo (filename, "\\")
ms = info['FileVersionMS']
ls = info['FileVersionLS']
return HIWORD (ms), LOWORD (ms), HIWORD (ls), LOWORD (ls)
filename = "C:\\WINDOWS\\system32\\user32.dll"
print ".".join ([str (i) for i in get_version_number (filename)])
по мотивам http://forum.script-coding.info/viewtopic.php?id=471
Спасибо за примеры. Очень пригодились!!
ОтветитьУдалить