Tôi đã tạo một hệ thống nơi người dùng tải video lên hệ thống tệp của máy chủ của tôi và tôi cần cách tạo tên tệp duy nhất cho tệp video. Tôi có nên sử dụng random.getrandbits không? Có cách nào để làm điều này với một sự kết hợp của các chữ cái và số?Tạo chuỗi tên an toàn ngẫu nhiên và chuỗi an toàn URL
Trả lời
Hãy xem Universally unique identifiers (UUID)
và mô-đun của Python uuid
.
Đây là những gì tôi sử dụng:
import base64
import uuid
base64.urlsafe_b64encode(uuid.uuid4().bytes)
tôi tạo ra một uuid, nhưng tôi sử dụng các byte thay vì phiên bản hex lớn hơn hoặc một với dấu gạch ngang. Sau đó, tôi mã hóa nó thành chuỗi cơ sở an toàn URL-64. Đây là một chuỗi dài hơn so với sử dụng hex, nhưng sử dụng base64 làm cho nó để các ký tự trong chuỗi được an toàn cho các tập tin, url và hầu hết những thứ khác.
Một vấn đề là ngay cả với urlsafe_b64encode, nó luôn luôn muốn '=' s dấu hiệu vào cuối mà không phải là url an toàn. Các ký hiệu '=' s là để giải mã cơ sở-64 thông tin được mã hóa, vì vậy nếu bạn chỉ cố gắng để tạo chuỗi ngẫu nhiên, sau đó bạn có lẽ có thể safey loại bỏ chúng với:
str.replace('=', '')
Đây chính xác là những gì tôi cần ngay bây giờ; cảm ơn! Chỉ nghĩ rằng bạn muốn biết rằng câu trả lời của bạn cho một câu hỏi có điểm thấp vẫn giúp một chàng trai ngẫu nhiên trên Internet. –
Cảm ơn phản hồi. Đối với chúng tôi, nó được tổ chức theo thời gian thử nghiệm cho đến nay, gần một năm sau đó, chúng tôi vẫn sử dụng đoạn mã nhỏ này để tạo ra các khóa chính trong toàn bộ ứng dụng của chúng tôi. –
Lưu ý rằng trên Python 3 tôi đã bao gồm '.decode ('utf-8')' để có được một chuỗi để làm thay thế trên: 'base64.urlsafe_b64encode (uuid.uuid4(). Bytes) .decode ('utf-8 ') .replace (' = ',' ') ' – jakewins
Bạn có thể sử dụng, bằng Python 3.6 , mô-đun bí mật.
>>> import secrets
>>> secrets.token_urlsafe(8)
'Pxym7N2zJRs'
tài liệu hơn nữa là ở đây: https://docs.python.org/3/library/secrets.html
thể trùng lặp của http://stackoverflow.com/questions/2257441/python-random-string-generation-with-upper-case-letters-and-digits –
Bạn đang sử dụng khung làm việc nào? Thường thì điều này được xử lý cho bạn. Có vấn đề gì với thư viện http://docs.python.org/library/tempfile.html hiện tại? –
@ S.Lott Tôi không nghĩ rằng anh ấy muốn lưu trữ video tạm thời. – Gandaro