Найти - Пользователи
Полная версия: ActivePython под Windows: атрибуты файлов
Начало » Python для экспертов » ActivePython под Windows: атрибуты файлов
1 2
Все ники заняты
Здесь на форуме нашёл только способ установки/снятия ReadOnly:
import os, stat
os.chmod("C:\\Temp\\testfile.txt", stat.S_IREAD) # поставить read-only
os.chmod("C:\\Temp\\testfile.txt", stat.S_IWRITE) # снять read-only
Кроме того, модули os и stat позволяют прочитать/установить некоторые атрибуты, например:
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)
# задание текущего времени последнего доступа и модификации
os.utime("C:\\Temp\\testfile.txt", None)
# задание указанного времени последнего доступа и модификации
os.utime("C:\\Temp\\testfile.txt", (1, 1))
А как быть с остальными атрибутами? Есть несколько вопросов:
Как прочитать read-only?
Как установить/прочитать атрибуты “скрытый”, “системный”, “архивный”?
Как установить дату создания?
Возможно ли задание атрибутов прав доступа для пользователей и групп?
Как узнать каталог, в котором находится сам скрипт?
bialix
1) читайте MSDN
2) можно через pywin32 или ctypes

import win32api
help(win32api.GetFileAttributes)
help(win32api.SetFileAttributes)
Все ники заняты
За пример спасибо :).
А по первому предлагаешь поискать словосочетание “read-only” в MSDN?
Вообще, я догадываюсь, что через win32api можно сделать почти всё, что угодно, но интересуют в первую очередь “питоновские” методы решения проблем. А то, знаете ли, если всё через win32api делать, не проще ли на сях писать?
tabajara
Все ники заняты
А то, знаете ли, если всё через win32api делать, не проще ли на сях писать?
Ні, не простіше - там вказівники є )))) А звідки в пітоні, без win32api, можуть взятись якісь надзнання про файлову систему? Як для сішки так і для пітона - одна і та сама бібліотека. Без win32api є os.stat. Мені здається, що він видає абсолютно всю відому інформацію про файл. Файл - це структура даних - тому мені здається, що os.stat включає всі поля тої структури, бо не логічно одні поля включати, інші - пропускати. Тут є опис os.stat http://docs.python.org/lib/os-file-dir.html
tabajara
http://docs.python.org/lib/module-stat.html
Все ники заняты
Неужто узнать каталог, в котором находится сам скрипт, без прямого обращения к win32api нельзя?
tabajara, вот как раз в os.stat и в stat я и не нашёл виндовые атрибуты файлов, чему и удивился.
tabajara
Все ники заняты
А как быть с остальными атрибутами? Есть несколько вопросов:
Как прочитать read-only?
Как установить/прочитать атрибуты “скрытый”, “системный”, “архивный”?
Как установить дату создания?
Возможно ли задание атрибутов прав доступа для пользователей и групп?
Ці є точно. Я бачив. Не знаю чи в stat.py вони відображені, але в os.stat є. Групи є в os.getgroups.
tabajara
Все ники заняты
Неужто узнать каталог, в котором находится сам скрипт, без прямого обращения к win32api нельзя?
Можна. Може то і не правильно, але працює):
#!/usr/bin/env python
import sys
from os import path
print path.join(*path.split(path.abspath(sys.argv[0]))[:-1])
… принаймні, в мене на лінуксі.
bialix
Все ники заняты
За пример спасибо :).
А по первому предлагаешь поискать словосочетание “read-only” в MSDN?
Нет. Предлагаю почитать про атрибуты файлов и ACL – права пользователей.

Все ники заняты
Вообще, я догадываюсь, что через win32api можно сделать почти всё, что угодно, но интересуют в первую очередь “питоновские” методы решения проблем. А то, знаете ли, если всё через win32api делать, не проще ли на сях писать?
Начнем с того, что в комплект ActivePython, который вынесен в тему топика, библиотека pywin32 включается по умолчанию.
И вообще она из разряда must have. Почему она до сих пор не в стандартных либах питона – вопрос к разработчикам питона.

На Сях безусловно некоторые вещи писать проще, только их потом НЕ ПРОЩЕ к питону прикручивать.
Если знаешь Си так же хорошо, как я – то использование ctypes тебе должно понравиться.

А Питон в отношении винды слаб на возможности.
Как и любая система с открытыми исходниками, рожденная в юникс-сообществе, она как может игнорирует некоторые особенности майкрософта. И это возможно печально.

Если посмотреть внимательно, питон пытается предоставлять универсальное API для множества платформ. А поскольку виндовые атрибуты файлов выпадают из этого универсального ряда, то реализована поддержка только read-only атрибута. Через os.chmod – чисто юниксовую функцию!!! – эмулируется управления битом read-only. ЭМУЛИРУЕТСЯ – потому что в винде такой функции не существует.

Подумай об этом.
bialix
tabajara
Все ники заняты
Неужто узнать каталог, в котором находится сам скрипт, без прямого обращения к win32api нельзя?
Можна. Може то і не правильно, але працює):
#!/usr/bin/env python
import sys
from os import path
print path.join(*path.split(path.abspath(sys.argv[0]))[:-1])
… принаймні, в мене на лінуксі.
Зачем так сложно?

#!/usr/bin/env python
import os
import sys
print os.path.realpath(os.path.dirname(sys.argv[0]))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB