SORU
21 Temmuz 2009, Salı


Touch Python kullanarak uygulamak?

touch günün geçerli saati dosyaların erişim ve değiştirme zamanları ayarlayan bir Unıx programıdır. Eğer dosya mevcut değilse, varsayılan izinleri ile oluşturulur.

Nasıl bir Python fonksiyonu olarak uygulamak istiyorsunuz? Çapraz platform ve eksiksiz olmaya çalışın.

"Touch dosya python" bu harika, ama os.utime. işaret değildir) (geçerli Google sonuçları

CEVAP
21 Temmuz 2009, Salı


Bu biraz daha fazla yarış-ücretsiz diğer çözümleri daha çalışır. (with anahtar kelime Python yeni 2.5.)

import os
def touch(fname, times=None):
    with open(fname, 'a'):
        os.utime(fname, times)

Kabaca eşdeğer.

import os
def touch(fname, times=None):
    fhandle = open(fname, 'a')
    try:
        os.utime(fname, times)
    finally:
        fhandle.close()

Şimdi, gerçekten yapmak yarış-ücretsiz, ihtiyacın için kullan futimes ve değişim zaman açık filehandle, yerine dosya açma ve değiştirme zaman damgası adı (hangi olabilir adı). Ne yazık ki, Python ctypes veya benzeri geçmeden futimes aramak için bir yol sağlar gibi görünmüyor...


EDİT

Belirtildiği gibi Nate Parsons Python 3.3 olacak add specifying a file descriptor (os.supports_fd) gibi işlevleri os.utime, hangi kullanır futimes sistem çağrısı yerine utimes sistem çağrısı başlık altında. Diğer bir deyişle:

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)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BgirlNilaya

    BgirlNilaya

    29 EKİM 2008
  • Joe DiFeo

    Joe DiFeo

    7 AĞUSTOS 2012
  • PomplamooseMusic

    PomplamooseM

    28 HAZİRAN 2008