Уведомления

Jabber-конференция сообщества: pythonua@conference.jabber.ru

#1 Май 23, 2007 20:31:41

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython под Windows: атрибуты файлов

Здесь на форуме нашёл только способ установки/снятия 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?
Как установить/прочитать атрибуты “скрытый”, “системный”, “архивный”?
Как установить дату создания?
Возможно ли задание атрибутов прав доступа для пользователей и групп?
Как узнать каталог, в котором находится сам скрипт?



Офлайн

#2 Май 23, 2007 21:37:30

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython под Windows: атрибуты файлов

1) читайте MSDN
2) можно через pywin32 или ctypes

import win32api
help(win32api.GetFileAttributes)
help(win32api.SetFileAttributes)



Офлайн

#3 Май 23, 2007 22:03:18

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython под Windows: атрибуты файлов

За пример спасибо :).
А по первому предлагаешь поискать словосочетание “read-only” в MSDN?
Вообще, я догадываюсь, что через win32api можно сделать почти всё, что угодно, но интересуют в первую очередь “питоновские” методы решения проблем. А то, знаете ли, если всё через win32api делать, не проще ли на сях писать?



Офлайн

#4 Май 23, 2007 22:42:28

tabajara
От:
Зарегистрирован: 2007-01-02
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

ActivePython под Windows: атрибуты файлов

Все ники заняты
А то, знаете ли, если всё через win32api делать, не проще ли на сях писать?
Ні, не простіше - там вказівники є )))) А звідки в пітоні, без win32api, можуть взятись якісь надзнання про файлову систему? Як для сішки так і для пітона - одна і та сама бібліотека. Без win32api є os.stat. Мені здається, що він видає абсолютно всю відому інформацію про файл. Файл - це структура даних - тому мені здається, що os.stat включає всі поля тої структури, бо не логічно одні поля включати, інші - пропускати. Тут є опис os.stat http://docs.python.org/lib/os-file-dir.html



Отредактировано (Май 23, 2007 22:43:15)

Офлайн

#5 Май 23, 2007 22:47:46

tabajara
От:
Зарегистрирован: 2007-01-02
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

ActivePython под Windows: атрибуты файлов

Офлайн

#6 Май 23, 2007 22:57:33

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython под Windows: атрибуты файлов

Неужто узнать каталог, в котором находится сам скрипт, без прямого обращения к win32api нельзя?
tabajara, вот как раз в os.stat и в stat я и не нашёл виндовые атрибуты файлов, чему и удивился.



Отредактировано (Май 23, 2007 23:00:04)

Офлайн

#7 Май 23, 2007 23:22:51

tabajara
От:
Зарегистрирован: 2007-01-02
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

ActivePython под Windows: атрибуты файлов

Все ники заняты
А как быть с остальными атрибутами? Есть несколько вопросов:
Как прочитать read-only?
Как установить/прочитать атрибуты “скрытый”, “системный”, “архивный”?
Как установить дату создания?
Возможно ли задание атрибутов прав доступа для пользователей и групп?
Ці є точно. Я бачив. Не знаю чи в stat.py вони відображені, але в os.stat є. Групи є в os.getgroups.



Отредактировано (Май 23, 2007 23:29:06)

Офлайн

#8 Май 23, 2007 23:39:50

tabajara
От:
Зарегистрирован: 2007-01-02
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

ActivePython под Windows: атрибуты файлов

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



Отредактировано (Май 23, 2007 23:43:11)

Офлайн

#9 Май 24, 2007 07:06:20

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython под Windows: атрибуты файлов

Все ники заняты
За пример спасибо :).
А по первому предлагаешь поискать словосочетание “read-only” в MSDN?
Нет. Предлагаю почитать про атрибуты файлов и ACL – права пользователей.

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

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

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

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

Подумай об этом.



Отредактировано (Май 24, 2007 07:07:31)

Офлайн

#10 Май 24, 2007 07:11:19

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython под Windows: атрибуты файлов

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]))



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version