Hướng dẫn the process cannot access the file because it is being used by another process python - quá trình không thể truy cập tệp vì nó đang được sử dụng bởi một quá trình khác python

try:
    masterpath = os.path.join(path, "master.txt") 
    with open(masterpath, 'r') as f:
        s = f.read()
    f.close()
    exec(s)
    with open(masterpath, 'w') as g:
        g.truncate()
    g.close()
    os.remove(masterpath)

Ở đây tôi muốn đọc một cái gì đó trong tệp .txt và sau đó xóa nội dung và xóa nó. Nhưng nó luôn hiển thị nó không thể xóa nó vì 'quá trình không thể truy cập vào tệp vì nó đang được sử dụng bởi một quy trình khác'. Trên thực tế, những gì tôi cần là xóa tệp .txt, nhưng đôi khi nó không thể xóa ngay lập tức, vì vậy tôi xóa nội dung lúc đầu trong trường hợp nó sẽ được đọc lại. Vì vậy, có cách nào tốt để đọc một cái gì đó trong tệp .txt và sau đó xóa tệp này càng sớm và ổn định càng tốt?
Actually what I need is to delete the .txt file, but it cannot delete immediately sometimes, so I erase the content at first in case that it will be read again. So is there any good way to read something in a .txt file and then delete this file as soon and stable as possible?

Hỏi ngày 4 tháng 12 năm 2018 lúc 6:58Dec 4, 2018 at 6:58

Hướng dẫn the process cannot access the file because it is being used by another process python - quá trình không thể truy cập tệp vì nó đang được sử dụng bởi một quá trình khác python

1

Bạn không nên gọi f.close() cũng như g.close(). Nó được gọi tự động bởi câu lệnh with.should NOT call f.close() nor g.close(). It is called automatically by with statement.

Đã trả lời ngày 4 tháng 12 năm 2018 lúc 7:00Dec 4, 2018 at 7:00

Nhograpes

7,7691 Huy hiệu vàng16 Huy hiệu bạc 30 Huy hiệu Đồng1 gold badge16 silver badges30 bronze badges

1

Xóa các câu lệnh close() không cần thiết để bắt đầu - như @grapes được đề cập - tại sao bạn lại cắt ngắn những gì bạn đang xóa? Chỉ cần xóa nó ...

try:
    masterpath = os.path.join(path, "master.txt") 
    with open(masterpath, 'r') as f:
        s = f.read()
    exec(s)
except Error as e:
    print(e)
else:
    os.remove(masterpath)

FYI, thật xấu khi thực hiện nội dung của tệp nếu bạn không kiểm soát nội dung của tệp nói.

Tùy chọn khác:

masterpath = os.path.join(path, "master.txt") 
with open(masterpath, 'r') as f:
    try:        
        s = f.read()            
    except Error as e:
        print(e)
    else:
        exec(s)
os.remove(masterpath)

Đã trả lời ngày 4 tháng 12 năm 2018 lúc 7:19Dec 4, 2018 at 7:19

Hướng dẫn the process cannot access the file because it is being used by another process python - quá trình không thể truy cập tệp vì nó đang được sử dụng bởi một quá trình khác python

Sina Khelilsina KhelilSina Khelil

2.0161 Huy hiệu vàng17 Huy hiệu bạc27 Huy hiệu đồng1 gold badge17 silver badges27 bronze badges

Cố gắng sử dụng giấc ngủ ngắn trong phần ngoại lệ:

    try:
        masterpath = os.path.join(path, "master.txt") 
        with open(masterpath, 'r') as f:
            s = f.read()
        f.close()
        exec(s)
        with open(masterpath, 'w') as g:
            g.truncate()
        g.close()
        os.remove(masterpath)
   except WindowsError:
            time.sleep(sleep)
        else:
            break

Một cách khác là sử dụng:

os.remove(masterpath)

Đã trả lời ngày 4 tháng 12 năm 2018 lúc 7:05Dec 4, 2018 at 7:05

Hướng dẫn the process cannot access the file because it is being used by another process python - quá trình không thể truy cập tệp vì nó đang được sử dụng bởi một quá trình khác python

2

Bài đăng Hashnode liên quan hàng đầu

[WinError 32] Quá trình không thể truy cập tệp vì đó là ...

PERSISSERError: [WinError 32] Quá trình không thể truy cập vào tệp vì nó đang được sử dụng bởi một quy trình khác (Python/Django); 97, trong Run_on_Commit ...

[WinError 32] Quá trình không thể truy cập tệp vì đó là ...

PERSISSERError: [WinError 32] Quá trình không thể truy cập vào tệp vì nó đang được sử dụng bởi một quy trình khác (Python/Django); 97, trong Run_on_Commit ...

Trợ giúp với PermissionError: [WinError 32] Quá trình không thể truy cập tệp vì nó đang được sử dụng bởi một quy trình khác: 'newids.txt'.

Bài trung bình liên quan hàng đầu

Đọc thêm>

[WinError 32] Quá trình không thể truy cập tệp vì đó là ...

PERSISSERError: [WinError 32] Quá trình không thể truy cập vào tệp vì nó đang được sử dụng bởi một quy trình khác (Python/Django); 97, trong Run_on_Commit ...

Đọc thêm>

[WinError 32] Quá trình không thể truy cập tệp vì đó là ...

PERSISSERError: [WinError 32] Quá trình không thể truy cập vào tệp vì nó đang được sử dụng bởi một quy trình khác (Python/Django); 97, trong Run_on_Commit ...

Trợ giúp với PermissionError: [WinError 32] Quá trình không thể truy cập tệp vì nó đang được sử dụng bởi một quy trình khác: 'newids.txt'.

Bài trung bình liên quan hàng đầu

Câu hỏi về Stackoverflow liên quan hàng đầu

Khắc phục sự cố mã trực tiếp

Lightrun cho phép các nhà phát triển thêm nhật ký, số liệu và ảnh chụp nhanh vào mã trực tiếp - không cần khởi động lại hoặc triển khai lại.

Bắt đầu miễn phí

Chủ đề Reddit liên quan hàng đầu

Bài đăng hackernoon liên quan hàng đầu

Tweet liên quan đến hàng đầu

Bài viết liên quan đến hàng đầu