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

  • Derek Banas

    Derek Banas

    12 AĞUSTOS 2008
  • Hak5DarrensVlog

    Hak5DarrensV

    11 EYLÜL 2009
  • Marissah Simonini

    Marissah Sim

    25 HAZİRAN 2013