Tôi cần phát triển tập lệnh sẽ khởi chạy một số tính toán. Bạn muốn tập lệnh này xử lý^C chính xác bằng cách xóa một số thư mục tạm thời. Tôi đã thử một vài phiên bản của mã trong signal_handler:Python, xóa thư mục: lỗi Tệp tồn tại
shutil.rmtree(self.temp)
hoặc thậm chí
os.system("rm -rf " + self.temp)
khi tôi làm gián đoạn việc thực hiện và xử lý được gọi là để loại bỏ các thư mục, tôi nhận được lỗi như:
OSError: [Errno 17] File exists : 'foo'
hoặc
rm: Unable to remove directory foo: File exists
Sau khi thực thi, thư mục tôi muốn xóa bị trống, và tôi có thể xóa nó bằng một rm -r
trong vỏ. Tuy nhiên, nếu tôi thực thi mã:
for f in os.listdir(self.temp):
os.remove(os.path.join(self.temp,f))
for f in os.listdir(self.temp):
print f
os.rmdir(self.temp)
tôi, tất nhiên, nhận lỗi, nhưng vòng lặp thứ hai tìm thấy tập tin này: .nfsA13D3
Bất cứ ai cũng có một giải pháp cho vấn đề của tôi? Cảm ơn bạn!
'.nfs *' tệp được tạo khi bạn 'rm' một tệp trên một gắn kết NFS vẫn đang được sử dụng bởi một cái gì đó. Khi số lượng tham chiếu trên tệp '.nfs' giảm xuống 0, nó * sẽ * biến mất (tôi đã chạy vào các trường hợp trong quá khứ, nơi nó không phải lúc nào, mặc dù, yêu cầu dọn dẹp thủ công). – twalberg