Поверхность Шрифта статьи в IE: Создание веб-Работы Шрифтов говорит, что работает со всеми тремя главными браузерами.
Вот образец, я получил работу: http://brendanjerwin.com/test_font.html
[еще 117] обсуждение находится в Шрифты Встраивания .
Use os.open()
with os.O_CREAT
and os.O_EXCL
to create the file. That will fail if the file already exists:
>>> fd = os.open("x", os.O_WRONLY | os.O_CREAT | os.O_EXCL)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 17] File exists: 'x'
Once you've created a new file, use os.fdopen()
to turn the handle into a standard Python file object:
>>> fd = os.open("y", os.O_WRONLY | os.O_CREAT | os.O_EXCL)
>>> f = os.fdopen(fd, "w") # f is now a standard Python file object
Edit: From Python 3.3, the builtin open()
has an x
mode that means "open for exclusive creation, failing if the file already exists".
Если у вас есть идентификатор
, связанный с каждым потоком / процессом, который пытается создать файл, вы можете поместить этот идентификатор в какой-нибудь суффикс, тем самым гарантируя, что нет двух процессов может использовать одно и то же имя файла.
Это устраняет состояние гонки между процессами.
Если вас беспокоит состояние гонки, вы можете создать временный файл , а затем переименовать его.
>>> import os
>>> import tempfile
>>> f = tempfile.NamedTemporaryFile(delete=False)
>>> f.name
'c:\\users\\hughdb~1\\appdata\\local\\temp\\tmpsmdl53'
>>> f.write("Hello world")
>>> f.close()
>>> os.rename(f.name, r'C:\foo.txt')
>>> if os.path.exists(r'C:\foo.txt') :
... print 'File exists'
...
File exists
В качестве альтернативы вы можете создать файлы с помощью ] uuid в имени. Stackoverflow элемент на этом.
>>> import uuid
>>> str(uuid.uuid1())
'64362370-93ef-11de-bf06-0023ae0b04b8'