Tệp tạm thời Python là gì?

Trong phiên bản 2. 3 của Python, mô-đun này đã được đại tu để tăng cường bảo mật. Nó hiện cung cấp ba chức năng mới, , và , sẽ loại bỏ tất cả nhu cầu sử dụng chức năng không an toàn còn lại. Tên tệp tạm thời được tạo bởi mô-đun này không còn chứa ID tiến trình;

Ngoài ra, tất cả các chức năng có thể gọi được của người dùng hiện có thêm các đối số cho phép kiểm soát trực tiếp vị trí và tên của các tệp tạm thời. Không còn cần thiết phải sử dụng các biến mẫu và tempdir toàn cầu. Để duy trì khả năng tương thích ngược, thứ tự đối số hơi kỳ quặc;

Mô-đun xác định các chức năng người dùng có thể gọi sau đây

tệp tạm thời. Tệp tạm thời[ [ mode='w+b' [ , bufsize=-1 [ , hậu tố='' [ , prefix='tmp' [ , dir=None ]]]]]]

Trả về một đối tượng giống như tệp có thể được sử dụng làm vùng lưu trữ tạm thời. Tệp được tạo bằng cách sử dụng. Nó sẽ bị hủy ngay sau khi đóng [bao gồm cả đóng ngầm khi đối tượng được thu gom rác]. Trong Unix, mục nhập thư mục cho tệp 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;

Tham số chế độ mặc định là 'w+b' để tệp được tạo có thể được đọc và ghi mà không bị đóng. Chế độ nhị phân được sử dụng để nó hoạt động nhất quán trên tất cả các nền tảng mà không cần quan tâm đến dữ liệu được lưu trữ. bufsize mặc định là -1 , nghĩa là hệ điều hành mặc định được sử dụng.

Các tham số dir, tiền tố và hậu tố được chuyển đến

Đối tượng được trả về là đối tượng tệp thực trên 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 file là đối tượng tệp thực bên dưới. Đối tượng giống như tệp này có thể được sử dụng trong một câu lệnh, giống như một tệp bình thường.

tệp tạm thời. NamedTemporaryFile[ [ mode='w+b' [ , bufsize=-1 [ , hậu tố='' [ , prefix='tmp' [ , dir=None [ , delete=True ]]]]]]]

Chức năng này hoạt động chính xác như vậy, ngoại trừ việc 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 hủy liên kết]. Tên đó có thể được truy xuất từ ​​thành viên tên của đối tượng tệp. Việc 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 đang mở, sẽ khác nhau giữa các nền tảng [có thể sử dụng tên này trên Unix; không thể sử dụng trên Windows NT trở lên]. Nếu xóa là đúng [mặc định], tệp sẽ bị xóa ngay sau 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 file là đối tượng tệp thực bên dưới. Đối tượng giống như tệp này có thể được sử dụng trong một câu lệnh, giống như một tệp bình thường.

Mới trong phiên bản 2. 3

Mới trong phiên bản 2. 6. Tham số xóa.

tệp tạm thời. SpooledTemporaryFile[ [ max_size=0 [ , mode='w+b' [ , bufsize=-1 [ , hậu tố='' [ , prefix='tmp' [ , dir=None ]]]]]]]

Hàm này hoạt động chính xác như vậy, ngoại trừ việc dữ liệu được lưu vào bộ đệm cho đến khi kích thước tệp vượt quá max_size hoặc cho đến khi tệp fileno[] method is called, at which point the contents are written to disk and operation proceeds as with .

Tệp kết quả có một phương thức bổ sung, rollover[] , khiến tệp cuộn qua một tệp trên đĩa bất kể .

Đối tượng được trả về là một đối tượng giống như tệp có thuộc tính _file là đối tượng hoặc đối tượng tệp thực, tùy thuộc vào việc rollover[] has been called. This file-like object can be used in a statement, just like a normal file.

Mới trong phiên bản 2. 6

tệp tạm thời. mkstemp[ [ suffix='' [ , prefix='tmp' [ , dir=None [ , text=False ]]]]]

Tạo một tệp tạm thời theo cách an toàn nhất có thể. Không có điều kiện tương tranh trong quá trình tạo tệp, giả sử rằng nền tảng thực hiện đúng cờ cho. Tệp chỉ có thể đọc và ghi được bằng ID người dùng đang 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ì không ai có thể thực thi được tệp đó. Bộ mô tả tệp không được kế thừa bởi các tiến trình con

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

Nếu chỉ định hậu tố thì tên tệp sẽ kết thúc bằng hậu tố đó, ngược lại sẽ không có hậu tố. không đặt dấu chấm giữa tên tệp và hậu tố;

Nếu tiền tố được chỉ định, tên tệp sẽ bắt đầu bằng tiền tố đó;

Nếu thư mục được chỉ định, tệp sẽ được tạo trong thư mục đó; . 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 tới các lệnh bên ngoài thông qua os. popen[] .

Nếu văn bản được chỉ định, nó cho biết nên mở tệp ở chế độ nhị phân [mặc định] hay chế độ văn bản. Trên một số nền tảng, điều này không có gì khác biệt

trả về một bộ chứa trình điều khiển cấp hệ điều hành cho một tệp đang mở [như sẽ được trả về bởi ] và tên đường dẫn tuyệt đối của tệp đó, theo thứ tự đó

Mới trong phiên bản 2. 3

tệp tạm thời. mkdtemp[ [ suffix='' [ , prefix='tmp' [ , 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 quá trình tạo thư mục. Thư mục chỉ có thể đọc, ghi và tìm kiếm được bằng ID người dùng đang tạo

Người dùng 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 xong với nó

Các đối số tiền tố, hậu tố và dir giống như đối với

trả về tên đường dẫn tuyệt đối của thư mục mới

Mới trong phiên bản 2. 3

tệp tạm thời. mktemp[ [ suffix='' [ , prefix='tmp' [ , dir=None ]]]]

Không dùng nữa kể từ phiên bản 2. 3. Sử dụng thay thế.

Trả về tên đường dẫn tuyệt đối của tệp không tồn tại tại thời điểm cuộc gọi được thực hiện. Các đối số tiền tố, hậu tố và dir giống như đối với

Cảnh báo

Việc sử dụng chức năng này có thể tạo ra lỗ hổng bảo mật trong chương trình của bạn. Vào thời điểm bạn bắt đầu làm bất cứ điều gì với tên tệp mà nó trả về, ai đó khác có thể đã đánh bại bạn. cách sử dụng có thể được thay thế dễ dàng bằng , chuyển cho nó tham số delete=False .

>>> f = NamedTemporaryFile[delete=False]
>>> f

>>> f.name
'/var/folders/5q/5qTPn6xq2RaWqk+1Ytw3-U+++TI/-Tmp-/tmpG7V1Y0'
>>> f.write["Hello World!\n"]
>>> f.close[]
>>> os.unlink[f.name]
>>> os.path.exists[f.name]
False

Mô-đun sử dụng hai biến toàn cục cho biết cách tạo tên tạm thời. Chúng được khởi tạo ở lần gọi đầu tiên tới bất kỳ chức năng nào ở trên. Người gọi có thể thay đổi chúng, nhưng điều này không được khuyến khích;

tệp tạm thời. tạm thời

Khi được đặt thành một giá trị khác với Không có , biến này xác định giá trị mặc định cho đối số thư mục cho tất cả các hàm được xác định trong mô-đun này.

Nếu tempdir không được đặt hoặc Không có tại bất kỳ cuộc gọi nào . danh sách là.

  1. Thư mục được đặt tên bởi biến môi trường TMPDIR .
  2. Thư mục được đặt tên theo biến môi trường TEMP .
  3. Thư mục được đặt tên bởi biến môi trường TMP .
  4. Vị trí dành riêng cho nền tảng
    • Trên RiscOS, thư mục được đặt tên theo biến môi trường Wimp$ScrapDir .
    • Trên Windows, các thư mục C. \TEMP , C. \TMP , \TEMP\TMP, in that order.
    • Trên tất cả các nền tảng khác, các thư mục /tmp , /var/tmp, and /usr/tmp, in that order.
  5. Như một phương sách cuối cùng, thư mục làm việc hiện tại
tệp tạm thời. gettempdir[]

Trả về thư mục hiện được chọn để tạo tệp tạm thời trong. Nếu không phải là Không có , điều này chỉ trả về nội dung của nó; .

Mới trong phiên bản 2. 3

tệp tạm thời. mẫu

Không dùng nữa kể từ phiên bản 2. 0. Sử dụng thay thế.

Khi được đặt thành một giá trị khác với Không có , biến này xác định tiền tố của thành phần cuối cùng của tên tệp được trả về bởi. Một chuỗi gồm sáu chữ cái và chữ số ngẫu nhiên được thêm vào tiền tố để làm cho tên tệp trở nên độc nhất. Tiền tố mặc định là tmp .

Các phiên bản cũ hơn của mô-đun này từng yêu cầu mẫu được đặt thành Không có after a call to ; this has not been necessary since version 1.5.2.

tệp tạm thời. gettempprefix[]

Trả lại tiền tố tên tệp được sử dụng để tạo tệp tạm thời. Cái này không chứa thành phần thư mục. Sử dụng chức năng này được ưu tiên hơn là đọc trực tiếp biến mẫu

Tại sao sử dụng tempfile?

Tài liệu nói lên tất cả. Theo quan điểm của tôi, bạn nên sử dụng tempfile khi bạn cần tạo một tệp nhưng không quan tâm đến tên của nó . Bạn có thể xóa tệp tự động khi bạn hoàn tất hoặc lưu, nếu bạn muốn. Nó cũng có thể hiển thị với các chương trình khác hoặc không.

Tệp tạm thời Python ở đâu?

gettempdir[] . Trên linux nó thường là /tmp. Thư mục này được sử dụng làm giá trị mặc định của tham số dir. On Windows platform, it is generally either user/AppData/Local/Temp or windowsdir/temp or systemdrive/temp. On linux it normally is /tmp. This directory is used as default value of dir parameter.

Tệp tạm thời hoạt động như thế nào?

Tệp tạm thời, còn được gọi là tệp tạm thời hoặc tệp tmp, được được tạo bởi Windows hoặc các chương trình trên máy tính của bạn để giữ dữ liệu trong khi tệp vĩnh viễn đang được ghi hoặc cập nhật. The data will be transferred to a permanent file when the task is complete, or when the program is closed.

Phần mở rộng tệp tạm thời là gì?

Tệp tạm thời thường có một. TMP hoặc. Phần mở rộng tệp TEMP, nhưng bất kỳ quy ước đặt tên nào cũng có thể được sử dụng.

Chủ Đề