2011-05-02 28 views
13

Kullanıcıların, bazen açmaya çalıştıkları kilitli dosyalara sahip oldukları bir sorunun hatalarını ayıklamaya çalışıyorum. Kodun istisna uygulamasının doğru olduğu anlaşılıyor, ancak kullanıcılar hata mesajlarını görmeyi hala rapor ediyor. Kilitli bir dosyayı nasıl taklit edebilirim, böylece kendim hatalarını ayıklayabilirim?Nasıl "kilitli" bir dosya (bir yazma kilidi olan) simüle edebilirim

DÜZENLEME: Windows için.

+0

hangi İşletim Sisteminde bunu yapmak isteyen vardır? –

+0

@Will, Windows. – Daisetsu

+0

Ne gibi hata mesajları görüyorlar? Hata mesajını aldıklarında dosyaları kilitlediklerinden emin misiniz? –

cevap

8

bağlıdır, ancak durumda, MS kelime kilitler Eğer uygulama kilit dosyaları eğer
wonderig eğer ve kilitleri ıçin yoktur:
sadece dosyayı kapatın biraz da uygulanması halinde değiştirme (bir TestApp oluşturmak için) ve asla Bu deneyin

+0

Word veya Excel benim önerilerim olacak, bu yüzden iyi ve gerçekten hak edilmiş bir ... :) –

+0

Luis, yardımlarınız için teşekkürler. Bu yöntemi deneyeceğim. :) – Daisetsu

10

(ve koşu tutmak):

(>&2 pause) >> yourfile.txt 

>> ekleme yourfile.txtaçıldı modu

başvuru için bkz this

+2

Gerçekten bunu seviyorum. Dosyamı kilitlemek için büyük MS-Yazılımı kullanmaktan daha kolay –

0

Python'da bir yazım yazmak için Windows API'sinden LockFileEx işlevini kullandım. Bu benim için iyi çalıştı (kilitli bir hedef başarısız olan shutil.copy()).

import win32con 
import win32file 
import pywintypes 

p = "yourfile.txt" 
f = file(p, "w") 
hfile = win32file._get_osfhandle(f.fileno()) 
flags = win32con.LOCKFILE_EXCLUSIVE_LOCK | win32con.LOCKFILE_FAIL_IMMEDIATELY 

win32file.LockFileEx(hfile, flags, 0, 0xffff0000, pywintypes.OVERLAPPED()) 

Bkz: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365203%28v=vs.85%29.aspx