Форум сайта python.su
Здесь на форуме нашёл только способ установки/снятия 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
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))
Офлайн
1) читайте MSDN
2) можно через pywin32 или ctypes
import win32api
help(win32api.GetFileAttributes)
help(win32api.SetFileAttributes)
Офлайн
За пример спасибо :).
А по первому предлагаешь поискать словосочетание “read-only” в MSDN?
Вообще, я догадываюсь, что через win32api можно сделать почти всё, что угодно, но интересуют в первую очередь “питоновские” методы решения проблем. А то, знаете ли, если всё через win32api делать, не проще ли на сях писать?
Офлайн
Все ники занятыНі, не простіше - там вказівники є )))) А звідки в пітоні, без win32api, можуть взятись якісь надзнання про файлову систему? Як для сішки так і для пітона - одна і та сама бібліотека. Без win32api є os.stat. Мені здається, що він видає абсолютно всю відому інформацію про файл. Файл - це структура даних - тому мені здається, що os.stat включає всі поля тої структури, бо не логічно одні поля включати, інші - пропускати. Тут є опис os.stat http://docs.python.org/lib/os-file-dir.html
А то, знаете ли, если всё через win32api делать, не проще ли на сях писать?
Отредактировано (Май 23, 2007 22:43:15)
Офлайн
Офлайн
Неужто узнать каталог, в котором находится сам скрипт, без прямого обращения к win32api нельзя?
tabajara, вот как раз в os.stat и в stat я и не нашёл виндовые атрибуты файлов, чему и удивился.
Отредактировано (Май 23, 2007 23:00:04)
Офлайн
Все ники занятыЦі є точно. Я бачив. Не знаю чи в stat.py вони відображені, але в os.stat є. Групи є в os.getgroups.
А как быть с остальными атрибутами? Есть несколько вопросов:
Как прочитать read-only?
Как установить/прочитать атрибуты “скрытый”, “системный”, “архивный”?
Как установить дату создания?
Возможно ли задание атрибутов прав доступа для пользователей и групп?
Отредактировано (Май 23, 2007 23:29:06)
Офлайн
Все ники занятыМожна. Може то і не правильно, але працює):
Неужто узнать каталог, в котором находится сам скрипт, без прямого обращения к 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)
Офлайн
Все ники занятыНет. Предлагаю почитать про атрибуты файлов и ACL – права пользователей.
За пример спасибо :).
А по первому предлагаешь поискать словосочетание “read-only” в MSDN?
Все ники занятыНачнем с того, что в комплект ActivePython, который вынесен в тему топика, библиотека pywin32 включается по умолчанию.
Вообще, я догадываюсь, что через win32api можно сделать почти всё, что угодно, но интересуют в первую очередь “питоновские” методы решения проблем. А то, знаете ли, если всё через win32api делать, не проще ли на сях писать?
Отредактировано (Май 24, 2007 07:07:31)
Офлайн
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]))
Офлайн