Phủ định trong Python


162

Tôi đang cố gắng tạo một thư mục nếu đường dẫn không tồn tại, nhưng! (không) toán tử không hoạt động. Tôi không chắc chắn làm thế nào để phủ nhận trong Python ... Cách chính xác để làm điều này là gì?

if (!os.path.exists("/usr/share/sounds/blues")):
        proc = subprocess.Popen(["mkdir", "/usr/share/sounds/blues"])
        proc.wait()

19
Nhân tiện, tại sao không sử dụng Python os.mkdir()?
Neil

1
Tôi đã không biết hàm os.mkdir (), mặc dù tôi đoán rằng có một cái gì đó như thế.
David Mulder

Câu trả lời:


229

Toán tử phủ định trong Python là not. Do đó chỉ cần thay thế !bằng not.

Ví dụ của bạn, làm điều này:

if not os.path.exists("/usr/share/sounds/blues") :
    proc = subprocess.Popen(["mkdir", "/usr/share/sounds/blues"])
    proc.wait()

Đối với ví dụ cụ thể của bạn (như Neil đã nói trong các bình luận), bạn không phải sử dụng subprocessmô-đun, bạn chỉ cần sử dụng os.mkdir()để có được kết quả bạn cần, với độ tốt xử lý ngoại lệ được thêm vào.

Thí dụ:

blues_sounds_path = "/usr/share/sounds/blues"
if not os.path.exists(blues_sounds_path):
    try:
        os.mkdir(blues_sounds_path)
    except OSError:
        # Handle the case where the directory could not be created.

30

Python thích các từ khóa tiếng Anh để chấm câu. Sử dụng not x, tức là not os.path.exists(...). Điều tương tự cũng đi cho &&||được andorbằng Python.



1

Kết hợp đầu vào từ những người khác (không sử dụng, không parens, sử dụng os.mkdir) bạn sẽ nhận được ...

specialpathforjohn = "/usr/share/sounds/blues"
if not os.path.exists(specialpathforjohn):
    os.mkdir(specialpathforjohn)

1
Mã của bạn (và của OP) là một tai nạn đang chờ xảy ra - hai trường hợp của một chuỗi chữ dài có lẽ phải giống hệt nhau. Và xin đừng vặn lại rằng đó chỉ là một ví dụ - đó là một ví dụ BAD cho người mới.
John Machin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.