(file_obj: IO[str])
| 40 | |
| 41 | |
| 42 | def _lock_file(file_obj: IO[str]) -> None: |
| 43 | if os.name == "nt": |
| 44 | import msvcrt |
| 45 | |
| 46 | # Windows 需要锁定至少 1 字节 |
| 47 | if os.fstat(file_obj.fileno()).st_size == 0: |
| 48 | file_obj.write("0") |
| 49 | file_obj.flush() |
| 50 | msvcrt.locking(file_obj.fileno(), msvcrt.LK_LOCK, 1) |
| 51 | else: |
| 52 | import fcntl |
| 53 | |
| 54 | fcntl.flock(file_obj.fileno(), fcntl.LOCK_EX) |
| 55 | |
| 56 | |
| 57 | def _unlock_file(file_obj: IO[str]) -> None: |