Hướng dẫn how to check if python script is running windows - cách kiểm tra xem tập lệnh python có đang chạy windows không

Điều tốt nhất/dễ dàng nhất tại sao kiểm tra xem một tập lệnh Python cụ thể đã chạy trong Windows?

Tôi có một tập lệnh đi qua tất cả các tệp trong một thư mục và sao chép chúng vào một thư mục khác (sắp xếp thư mục phim hoặc chương trình truyền hình). Tôi muốn đảm bảo khi tập lệnh bắt đầu rằng không có quy trình khác (cùng một tập lệnh) đã chạy, vì vậy tôi sẽ không gặp sự cố với 2 tập lệnh đang cố gắng di chuyển cùng một tệp.

Tôi đã cố gắng tạo một tệp khi bắt đầu tập lệnh và xóa nó khi tập lệnh kết thúc, nhưng tôi gặp sự cố khi tập lệnh bị sập và/hoặc ném lỗi.

Tôi biết rằng tôi có thể sử dụng psutil, nhưng sau đó tôi sẽ nhận được tên quy trình (python.exe) và tôi đang tìm kiếm một lý do tại sao để phân biệt xem quá trình Python đang chạy tập lệnh của tôi hoặc chương trình khác.

Đã hỏi ngày 2 tháng 1 năm 2017 lúc 22:04Jan 2, 2017 at 22:04

Hướng dẫn how to check if python script is running windows - cách kiểm tra xem tập lệnh python có đang chạy windows không

1

Bạn có thể sử dụng psutil.Process().cmdline() để xem dòng lệnh hoàn chỉnh của một quy trình.

Ngoài ra, bạn có thể khóa các tệp bạn đang làm việc. Xem câu trả lời cho câu hỏi này làm thế nào để làm điều này trên MS-Windows. Điều với khóa là bạn phải cẩn thận để loại bỏ chúng, đặc biệt là khi xảy ra lỗi.

Đã trả lời ngày 2 tháng 1 năm 2017 lúc 22:26Jan 2, 2017 at 22:26

Hướng dẫn how to check if python script is running windows - cách kiểm tra xem tập lệnh python có đang chạy windows không

Roland Smithroland SmithRoland Smith

41.1k3 Huy hiệu vàng60 Huy hiệu bạc88 Huy hiệu đồng3 gold badges60 silver badges88 bronze badges

Sử dụng Lockfile. Đó là đa nền tảng, sử dụng các hàm hệ điều hành gốc và mạnh mẽ hơn nhiều so với bất kỳ lược đồ tạo tệp khóa nhà nào

Đã trả lời ngày 2 tháng 1 năm 2017 lúc 22:30Jan 2, 2017 at 22:30

MaratmaratMarat

14.2k2 Huy hiệu vàng38 Huy hiệu bạc46 Huy hiệu đồng2 gold badges38 silver badges46 bronze badges

Tôi đã giải quyết nó bằng cách sử dụng một tệp giả trống. Khi bắt đầu quá trình tôi kiểm tra xem tệp có tồn tại không, nếu không tôi tạo một tệp mới, hãy chạy quy trình và xóa nó cuối cùng (ngay cả khi quá trình không thành công), nếu tệp tồn tại, điều đó có nghĩa là quá trình này Chạy ngay để tôi chấm dứt quy trình hiện tại (mới).

Đã trả lời ngày 2 tháng 8 năm 2018 lúc 11:12Aug 2, 2018 at 11:12

ShlomilanshlomilanshlomiLan

6181 Huy hiệu vàng8 Huy hiệu bạc 30 Huy hiệu Đồng1 gold badge8 silver badges30 bronze badges

Đối với Windows O.S. Bạn có thể sử dụng tệp Timestamp.txt

timestamp = 'timestamp.txt'
...
elif windows:
    try:
        new_timestamp = False
        if not os.path.exists(timestamp):
            new_timestamp = True
            try:
                with open(timestamp, 'a') as f_timestamp:
                    f_timestamp.write(str(int_t0))
            except IOError as e:
                out1 = 'M. Cannot open file for writing. Error: %s - %s.' \
                           % (e.logfile, e.strerror) + ' -> Exit code 3'
                logging.error(out1)
                sys.exit(3)

        if not new_timestamp and os.path.exists(timestamp):
            out1 = 'N. Script ' + __file__ + ' is already running.'
            print(out1)
            logging.error(out1)
            sys.exit(0)

    except IOError as e:
        out1 = 'J. Cannot open file. Error: %s - %s.' \
           % (e.filepath, e.strerror)  + ' -> Exit code 4'
        logging.error(out1)

...
try:
    f_timestamp.close()
    os.remove(timestamp)
except OSError as e:
    logging.error('B. Cannot delete ' + timestamp + \
          ' Error: %s - %s.' % (e.filename, e.strerror))

Ignatius

2.4212 Huy hiệu vàng18 Huy hiệu bạc32 Huy hiệu đồng2 gold badges18 silver badges32 bronze badges

Đã trả lời ngày 22 tháng 4 năm 2019 lúc 9:25Apr 22, 2019 at 9:25

1