Hướng dẫn temporary directory python - thư mục tạm thời python

Mã nguồn: lib/tempfile.py Lib/tempfile.py


Mô -đun này tạo ra các tập tin và thư mục tạm thời. Nó hoạt động trên tất cả các nền tảng được hỗ trợ. TemporaryFile, NamedTemporaryFile, TemporaryDirectorySpooledTemporaryFile là các giao diện cấp cao cung cấp việc dọn dẹp tự động và có thể được sử dụng làm người quản lý ngữ cảnh. mkstemp()mkdtemp() là các chức năng cấp thấp hơn yêu cầu dọn dẹp thủ công.

Tất cả các chức năng và trình xây dựng có thể gọi người dùng đều có các đối số bổ sung cho phép kiểm soát trực tiếp vị trí và tên của các tệp và thư mục tạm thời. Tên các tệp được sử dụng bởi mô -đun này bao gồm một chuỗi các ký tự ngẫu nhiên cho phép các tệp đó được tạo an toàn trong các thư mục tạm thời được chia sẻ. Để duy trì khả năng tương thích ngược, thứ tự đối số có phần kỳ lạ; Nên sử dụng các đối số từ khóa để rõ ràng.

Mô-đun xác định các mục có thể gọi người dùng sau:

________ 8 ________ 9 (mode = 'w+b', buffering =- 1, mã hóa = none, newline = none(mode='w+b', buffering=- 1, encoding=None, newline=None, suffix=None, prefix=None, dir=None, *, errors=None)

Trả về một đối tượng giống như tệp có thể được sử dụng làm khu vực lưu trữ tạm thời. Tệp được tạo an toàn, sử dụng các quy tắc tương tự như mkstemp(). Nó sẽ bị phá hủy ngay khi nó được đóng lại (bao gồm cả một đóng cửa ngầm khi đối tượng được thu thập rác). Trong Unix, mục nhập thư mục cho tệp hoàn toàn không được tạo hoặc bị xóa ngay sau khi tệp được tạo. Các nền tảng khác không hỗ trợ điều này; Mã của bạn không nên dựa vào một tệp tạm thời được tạo bằng cách sử dụng chức năng này hoặc không có tên hiển thị trong hệ thống tệp.file-like object that can be used as a temporary storage area. The file is created securely, using the same rules as mkstemp(). It will be destroyed as soon as it is closed (including an implicit close when the object is garbage collected). Under Unix, the directory entry for the file is either not created at all or is removed immediately after the file is created. Other platforms do not support this; your code should not rely on a temporary file created using this function having or not having a visible name in the file system.

Đối tượng kết quả có thể được sử dụng làm trình quản lý ngữ cảnh (xem ví dụ). Khi hoàn thành bối cảnh hoặc phá hủy đối tượng tệp, tệp tạm thời sẽ bị xóa khỏi hệ thống tập tin.Examples). On completion of the context or destruction of the file object the temporary file will be removed from the filesystem.

Tham số chế độ mặc định là

>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
1 để tệp được tạo và ghi mà không bị đóng. Chế độ nhị phân được sử dụng để nó hoạt động liên tục trên tất cả các nền tảng mà không liên quan đến dữ liệu được lưu trữ. Bộ đệm, mã hóa, lỗi và dòng mới được hiểu là đối với
>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
2.

Các tham số DIR, tiền tố và hậu tố có cùng ý nghĩa và mặc định như với mkstemp().

Đối tượng được trả về là một đối tượng tệp thực trên các nền tảng POSIX. Trên các nền tảng khác, nó là một đối tượng giống như tệp có thuộc tính

>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
4 là đối tượng tệp thực cơ bản.

Cờ

>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
5 được sử dụng nếu nó có sẵn và hoạt động (đặc trưng của Linux, yêu cầu nhân Linux 3.11 trở lên).

Trên các nền tảng không phải là POSIX hay Cygwin, TemplayFile là bí danh của tên được đặt tên.

Tăng một sự kiện kiểm toán

>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
6 với đối số
>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
7.auditing event
>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
6 with argument
>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
7.

Đã thay đổi trong phiên bản 3.5: cờ

>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
5 hiện được sử dụng nếu có.The
>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
5 flag is now used if available.

Đã thay đổi trong phiên bản 3.8: Đã thêm tham số lỗi.Added errors parameter.

________ 8 ________ 20 (Mode = 'W+B', Buffering =- 1, mã hóa = Không(mode='w+b', buffering=- 1, encoding=None, newline=None, suffix=None, prefix=None, dir=None, delete=True, *, errors=None)

Hàm này hoạt động chính xác như TemporaryFile1, ngoại trừ tệp được đảm bảo có tên hiển thị trong hệ thống tệp (trên Unix, mục nhập thư mục không được liên kết). Tên đó có thể được lấy từ thuộc tính TemporaryFile2 của đối tượng giống như tệp được trả về. Liệu tên có thể được sử dụng để mở tệp lần thứ hai hay không, trong khi tệp tạm thời được đặt tên vẫn còn mở, thay đổi giữa các nền tảng (nó có thể được sử dụng trên Unix; nó không thể trên Windows). Nếu xóa là đúng (mặc định), tệp sẽ bị xóa ngay khi đóng. Đối tượng được trả về luôn là một đối tượng giống như tệp có thuộc tính

>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
4 là đối tượng tệp thực cơ bản. Đối tượng giống như tệp này có thể được sử dụng trong câu lệnh TemporaryFile4, giống như một tệp thông thường.

Tăng một sự kiện kiểm toán

>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
6 với đối số
>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
7.auditing event
>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
6 with argument
>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
7.

Đã thay đổi trong phiên bản 3.8: Đã thêm tham số lỗi.Added errors parameter.

________ 8 ________ 20 (Mode = 'W+B', Buffering =- 1, mã hóa = Không(max_size=0, mode='w+b', buffering=- 1, encoding=None, newline=None, suffix=None, prefix=None, dir=None, *, errors=None)

Hàm này hoạt động chính xác như TemporaryFile1, ngoại trừ tệp được đảm bảo có tên hiển thị trong hệ thống tệp (trên Unix, mục nhập thư mục không được liên kết). Tên đó có thể được lấy từ thuộc tính TemporaryFile2 của đối tượng giống như tệp được trả về. Liệu tên có thể được sử dụng để mở tệp lần thứ hai hay không, trong khi tệp tạm thời được đặt tên vẫn còn mở, thay đổi giữa các nền tảng (nó có thể được sử dụng trên Unix; nó không thể trên Windows). Nếu xóa là đúng (mặc định), tệp sẽ bị xóa ngay khi đóng. Đối tượng được trả về luôn là một đối tượng giống như tệp có thuộc tính

>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
4 là đối tượng tệp thực cơ bản. Đối tượng giống như tệp này có thể được sử dụng trong câu lệnh TemporaryFile4, giống như một tệp thông thường.

Lớp ________ 8 ________ 28 (max_size = 0, mode = 'w+b', buffering =- 1, mã hóa = không

Lớp này hoạt động chính xác như TemporaryFile1, ngoại trừ dữ liệu được trình bày trong bộ nhớ cho đến khi kích thước tệp vượt quá MAX_SIZE hoặc cho đến khi phương thức tệp ____ ____3030 được gọi, tại thời điểm đó, nội dung được ghi vào đĩa và hoạt động tiến hành như với TemporaryFile1.

Tệp kết quả có một phương thức bổ sung, NamedTemporaryFile2, khiến cho tệp cuộn qua một tệp trên đĩa bất kể kích thước của nó.the truncate method now accepts a NamedTemporaryFile8 argument.

Đã thay đổi trong phiên bản 3.8: Đã thêm tham số lỗi.Added errors parameter.

Lớp ________ 8 ________ 40 (hậu tố = không, tiền tố = không(suffix=None, prefix=None, dir=None, ignore_cleanup_errors=False)

Lớp này một cách an toàn tạo ra một thư mục tạm thời bằng cách sử dụng các quy tắc tương tự như mkdtemp(). Đối tượng kết quả có thể được sử dụng làm trình quản lý ngữ cảnh (xem ví dụ). Khi hoàn thành bối cảnh hoặc phá hủy đối tượng thư mục tạm thời, thư mục tạm thời mới được tạo và tất cả các nội dung của nó được xóa khỏi hệ thống tập tin.Examples). On completion of the context or destruction of the temporary directory object, the newly created temporary directory and all its contents are removed from the filesystem.

Tên thư mục có thể được lấy từ thuộc tính TemporaryFile2 của đối tượng được trả về. Khi đối tượng được trả về được sử dụng làm Trình quản lý ngữ cảnh, TemporaryFile2 sẽ được gán cho mục tiêu của mệnh đề TemporaryDirectory4 trong câu lệnh TemporaryFile4, nếu có.

Thư mục có thể được làm sạch rõ ràng bằng cách gọi phương thức TemporaryDirectory6. Nếu bỏ qua_cleanup_errors là đúng, bất kỳ ngoại lệ chưa được xử lý nào trong quá trình dọn dẹp rõ ràng hoặc ẩn (chẳng hạn như TemporaryDirectory7 xóa các tệp mở trên Windows) sẽ bị bỏ qua và các mục có thể tháo rời còn lại bị xóa trên cơ sở chính thức tốt nhất. Mặt khác, các lỗi sẽ được nêu ra trong bất kỳ việc dọn dẹp ngữ cảnh nào (cuộc gọi TemporaryDirectory6, thoát khỏi trình quản lý bối cảnh, khi đối tượng được thu thập rác hoặc trong quá trình tắt phiên dịch).

Tăng một sự kiện kiểm toán TemporaryDirectory9 với đối số

>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
7.auditing event TemporaryDirectory9 with argument
>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
7.

Mới trong phiên bản 3.2.

Đã thay đổi trong phiên bản 3.10: Đã thêm tham số bỏ qua_cleanup_errors.Added ignore_cleanup_errors parameter.

________ 8 ________ 52 (hậu tố = không, tiền tố = none, dir = none, text = false) ¶(suffix=None, prefix=None, dir=None, text=False)

Tạo một tập tin tạm thời theo cách an toàn nhất có thể. Không có điều kiện đua trong việc tạo tệp, giả sử rằng nền tảng thực hiện đúng cờ SpooledTemporaryFile3 cho SpooledTemporaryFile4. Tệp có thể đọc được và chỉ có thể ghi bằng ID người dùng tạo. Nếu nền tảng sử dụng các bit quyền để cho biết liệu một tệp có thể thực thi được hay không, thì tệp không thể thực thi được bởi không ai. Bộ mô tả tập tin không được kế thừa bởi các quá trình con.

Không giống như TemporaryFile1, người dùng của mkstemp() chịu trách nhiệm xóa tệp tạm thời khi thực hiện với nó.

Nếu hậu tố không phải là SpooledTemporaryFile7, tên tệp sẽ kết thúc với hậu tố đó, nếu không sẽ không có hậu tố. mkstemp() không đặt dấu chấm giữa tên tệp và hậu tố; Nếu bạn cần một, hãy đặt nó ở đầu hậu tố.

Nếu tiền tố không phải là SpooledTemporaryFile7, tên tệp sẽ bắt đầu với tiền tố đó; Nếu không, một tiền tố mặc định được sử dụng. Mặc định là giá trị trả về của mkstemp()0 hoặc mkstemp()1, nếu phù hợp.

Nếu dir không phải là SpooledTemporaryFile7, tệp sẽ được tạo trong thư mục đó; Nếu không, một thư mục mặc định được sử dụng. Thư mục mặc định được chọn từ danh sách phụ thuộc vào nền tảng, nhưng người dùng ứng dụng có thể kiểm soát vị trí thư mục bằng cách đặt các biến môi trường TMPDIR, TEMP hoặc TMP. Do đó, không có gì đảm bảo rằng tên tệp được tạo sẽ có bất kỳ thuộc tính đẹp nào, chẳng hạn như không yêu cầu trích dẫn khi được chuyển cho các lệnh bên ngoài thông qua mkstemp()3.

Nếu bất kỳ hậu tố, tiền tố và dir không phải là SpooledTemporaryFile7, chúng phải là cùng loại. Nếu chúng là byte, tên trả về sẽ là byte thay vì str. Nếu bạn muốn buộc một byte trả về giá trị với hành vi mặc định khác, hãy vượt qua mkstemp()5.

Nếu văn bản được chỉ định và đúng, tệp được mở ở chế độ văn bản. Mặt khác, (mặc định) tệp được mở ở chế độ nhị phân.

mkstemp() trả về một tuple chứa một tay cầm cấp hệ điều hành cho một tệp mở (như sẽ được trả về bởi SpooledTemporaryFile4) và tên đường dẫn tuyệt đối của tệp đó, theo thứ tự đó.

Tăng một sự kiện kiểm toán

>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
6 với đối số
>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
7.auditing event
>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
6 with argument
>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
7.

Đã thay đổi trong phiên bản 3.5: Hậu tố, tiền tố và dir hiện có thể được cung cấp theo byte để có được giá trị trả về byte. Trước đó, chỉ có STR được phép. Hậu tố và tiền tố hiện chấp nhận và mặc định là SpooledTemporaryFile7 để gây ra giá trị mặc định phù hợp được sử dụng.suffix, prefix, and dir may now be supplied in bytes in order to obtain a bytes return value. Prior to this, only str was allowed. suffix and prefix now accept and default to SpooledTemporaryFile7 to cause an appropriate default value to be used.

Đã thay đổi trong phiên bản 3.6: Tham số Dir hiện chấp nhận một đối tượng giống như đường dẫn.The dir parameter now accepts a path-like object.

________ 8 ________ 72 (hậu tố = không, tiền tố = none, dir = none) ¶(suffix=None, prefix=None, dir=None)

Tạo một thư mục tạm thời theo cách an toàn nhất có thể. Không có điều kiện chủng tộc trong việc tạo thư mục. Thư mục có thể đọc được, có thể ghi và chỉ có thể tìm kiếm bằng ID người dùng tạo.

Người dùng của mkdtemp() chịu trách nhiệm xóa thư mục tạm thời và nội dung của nó khi thực hiện với nó.

Tiền tố, hậu tố và đối số DIR giống như đối với mkstemp().

mkdtemp() Trả về tên đường dẫn tuyệt đối của thư mục mới.

Tăng một sự kiện kiểm toán TemporaryDirectory9 với đối số

>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
7.auditing event TemporaryDirectory9 with argument
>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
7.

Đã thay đổi trong phiên bản 3.5: Hậu tố, tiền tố và dir hiện có thể được cung cấp theo byte để có được giá trị trả về byte. Trước đó, chỉ có STR được phép. Hậu tố và tiền tố hiện chấp nhận và mặc định là SpooledTemporaryFile7 để gây ra giá trị mặc định phù hợp được sử dụng.suffix, prefix, and dir may now be supplied in bytes in order to obtain a bytes return value. Prior to this, only str was allowed. suffix and prefix now accept and default to SpooledTemporaryFile7 to cause an appropriate default value to be used.

Đã thay đổi trong phiên bản 3.6: Tham số Dir hiện chấp nhận một đối tượng giống như đường dẫn.The dir parameter now accepts a path-like object.

________ 8 ________ 80 ()()

Trả về tên của thư mục được sử dụng cho các tệp tạm thời. Điều này xác định giá trị mặc định cho đối số DIR cho tất cả các hàm trong mô -đun này.

Python tìm kiếm một danh sách tiêu chuẩn các thư mục để tìm một danh sách mà người dùng gọi có thể tạo tệp. Danh sách là:

  1. Thư mục được đặt tên bởi biến môi trường tempfile.1.tempfile.1 environment variable.

  2. Thư mục được đặt tên bởi biến môi trường tempfile.2.tempfile.2 environment variable.

  3. Thư mục được đặt tên bởi biến môi trường tempfile.3.tempfile.3 environment variable.

  4. Vị trí cụ thể của nền tảng:

    • Trên Windows, các thư mục tempfile.4, tempfile.5, tempfile.6 và tempfile.7, theo thứ tự đó.

    • Trên tất cả các nền tảng khác, các thư mục tempfile.8, tempfile.9 và TemporaryFile0, theo thứ tự đó.

  5. Là một phương sách cuối cùng, thư mục làm việc hiện tại.

Kết quả của tìm kiếm này được lưu trữ, xem mô tả của TemporaryFile1 bên dưới.

Đã thay đổi trong phiên bản 3.10: Luôn trả về STR. Trước đây, nó sẽ trả về bất kỳ giá trị TemporaryFile1 nào bất kể loại nào miễn là nó không phải là SpooledTemporaryFile7.Always returns a str. Previously it would return any TemporaryFile1 value regardless of type so long as it was not SpooledTemporaryFile7.

________ 8 ________ 95 ()()

Giống như TemporaryFile6 nhưng giá trị trả về là trong byte.

Mới trong phiên bản 3.5.

________ 8 ________ 98 ()()

Trả về tiền tố tệp được sử dụng để tạo các tệp tạm thời. Điều này không chứa thành phần thư mục.

________ 8 ________ 100 ()()

Giống như mkstemp()0 nhưng giá trị trả về là trong byte.

Mới trong phiên bản 3.5.

________ 8 ________ 98 ()

Trả về tiền tố tệp được sử dụng để tạo các tệp tạm thời. Điều này không chứa thành phần thư mục.

________ 8 ________ 100 ()path-like object.

Giống như mkstemp()0 nhưng giá trị trả về là trong byte.

Mô -đun sử dụng biến toàn cầu để lưu trữ tên của thư mục được sử dụng cho các tệp tạm thời được trả về bởi TemporaryFile6. Nó có thể được đặt trực tiếp để ghi đè quá trình lựa chọn, nhưng điều này không được khuyến khích. Tất cả các chức năng trong mô -đun này có một đối số DIR có thể được sử dụng để chỉ định thư mục. Đây là cách tiếp cận được đề xuất không gây ngạc nhiên cho mã không nghi ngờ khác bằng cách thay đổi hành vi API toàn cầu.

________ 8 ________ 104¶

Khi được đặt thành một giá trị khác với SpooledTemporaryFile7, biến này xác định giá trị mặc định cho đối số DIR cho các hàm được xác định trong mô -đun này, bao gồm loại, byte hoặc str. Nó không thể là một đối tượng giống như đường dẫn.

Nếu TemporaryFile1 là SpooledTemporaryFile7 (mặc định) tại bất kỳ cuộc gọi nào đến bất kỳ chức năng nào ở trên ngoại trừ mkstemp()0, nó sẽ được khởi tạo theo thuật toán được mô tả trong TemporaryFile6.

>>> import tempfile

# create a temporary file and write some data to it
>>> fp = tempfile.TemporaryFile()
>>> fp.write(b'Hello world!')
# read data from file
>>> fp.seek(0)
>>> fp.read()
b'Hello world!'
# close the file, it will be removed
>>> fp.close()

# create a temporary file using a context manager
>>> with tempfile.TemporaryFile() as fp:
...     fp.write(b'Hello world!')
...     fp.seek(0)
...     fp.read()
b'Hello world!'
>>>
# file is now closed and removed

# create a temporary directory using the context manager
>>> with tempfile.TemporaryDirectory() as tmpdirname:
...     print('created temporary directory', tmpdirname)
>>>
# directory and contents have been removed

Ghi chú

Hãy coi chừng nếu bạn đặt TemporaryFile1 thành giá trị byte, có một tác dụng phụ khó chịu: loại trả về mặc định toàn cầu của mkstemp()mkdtemp() thay đổi thành byte khi không có đối số

>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
13,
>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
14 hoặc
>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
15 được cung cấp. Vui lòng không viết mã mong đợi hoặc tùy thuộc vào điều này. Hành vi khó xử này được duy trì để tương thích với việc thực hiện lịch sử.

Ví dụ;(suffix='', prefix='tmp', dir=None)

Dưới đây là một số ví dụ về cách sử dụng điển hình của mô -đun

>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
16:Use mkstemp() instead.

Chức năng và biến không dùng nữa

Một cách lịch sử để tạo các tệp tạm thời là trước tiên tạo tên tệp với hàm

>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
17 và sau đó tạo một tệp bằng tên này. Thật không may, điều này không an toàn, bởi vì một quy trình khác có thể tạo một tệp có tên này trong thời gian giữa cuộc gọi đến
>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False
17 và lần thử tiếp theo để tạo tệp theo quy trình đầu tiên. Giải pháp là kết hợp hai bước và tạo tệp ngay lập tức. Cách tiếp cận này được sử dụng bởi mkstemp() và các chức năng khác được mô tả ở trên.

________ 8 ________ 121 (hậu tố = '', tiền tố = 'tmp', dir = none) ¶

>>> f = NamedTemporaryFile(delete=False)
>>> f.name
'/tmp/tmptjujjt'
>>> f.write(b"Hello World!\n")
13
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False