Вам необходимо обновить конфигурацию с помощью соответствующих отображений, содержащих полные имена классов или подстановочные знаки:
<hibernate-configuration>
<session-factory>
...
<mapping class="com.mypackage.Category" />
</session-factory>
</hibernate-configuration>
Почему не делают Вы пробуете: newfile.py
#!/usr/bin/env python
import sys
inputfile = sys.argv[1]
with open(inputfile, 'w') as file:
pass
python newfile.py foobar.txt
или
подпроцесс использования:
import subprocess
subprocess.call(["touch", "barfoo.txt"])
def touch(fname):
if os.path.exists(fname):
os.utime(fname, None)
else:
open(fname, 'a').close()
Упрощенно:
def touch(fname):
open(fname, 'a').close()
os.utime(fname, None)
open
гарантирует, что там есть файл utime
гарантирует, что метки времени обновляются Теоретически , возможно, кто-то удалит файл после open
, в результате чего utime вызовет исключение. Но, пожалуй, это нормально, раз уж случилось что-то плохое.
Сложный (возможно, с ошибками):
def utime(fname, atime=None, mtime=None)
if type(atime) is tuple:
atime, mtime = atime
if atime is None or mtime is None:
statinfo = os.stat(fname)
if atime is None:
atime = statinfo.st_atime
if mtime is None:
mtime = statinfo.st_mtime
os.utime(fname, (atime, mtime))
def touch(fname, atime=None, mtime=None):
if type(atime) is tuple:
atime, mtime = atime
open(fname, 'a').close()
utime(fname, atime, mtime)
Это также пытается разрешить установку времени доступа или модификации, как GNU touch.
Это пытается быть немного более свободным от гонок, чем другие решения. (Ключевое слово with
является новым в Python 2.5.)
import os
def touch(fname, times=None):
with open(fname, 'a'):
os.utime(fname, times)
Примерно эквивалентно этому.
import os
def touch(fname, times=None):
fhandle = open(fname, 'a')
try:
os.utime(fname, times)
finally:
fhandle.close()
Теперь, чтобы действительно избавиться от гонки, вам нужно использовать futimes
и изменить метку времени открытого дескриптора файла вместо того, чтобы открывать файл и затем изменять метку времени в имени файла (которое могло быть переименовано). К сожалению, Python, похоже, не предоставляет способ вызвать futimes
без прохождения через ctypes
или аналогичные ...
EDIT
Как отметил Нейт Парсонс , Python 3.3 добавит , определяющий дескриптор файла (когда os.supports_fd
), к таким функциям, как os.utime
, который будет использовать системный вызов futimes
вместо системного вызова utimes
под капотом. Другими словами:
import os
def touch(fname, mode=0o666, dir_fd=None, **kwargs):
flags = os.O_CREAT | os.O_APPEND
with os.fdopen(os.open(fname, flags=flags, mode=mode, dir_fd=dir_fd)) as f:
os.utime(f.fileno() if os.utime in os.supports_fd else fname,
dir_fd=None if os.supports_fd else dir_fd, **kwargs)