1、前言
临时文件通常用来保存无法保存在内存中的数据,或者传递给必须从文件读取的外部程序。一般我们会在/tmp目录下生成唯一的文件名,但是安全的创建临时文件并不是那么简单,需要遵守许多规则。永远不要自己去尝试做这件事,而是要借助库函数实现。而且也要小心清理临时文件。
临时文件引起的最大问题就是,可以预测文件名,导致恶意用户可以预测临时文件名,从而创建软链接劫持临时文件。
相关免费学习推荐:python视频教程
2、tempfile模块介绍
创建临时文件一般使用的模块就是tempfile,此模块库函数常用的有以下几个:
- tempfile.mktemp # 不安全,禁止使用
- tempfile.mkstemp # 随机创建tmp文件,默认创建的文件在/tmp目录,当然也可以指定(可以使用)
- tempfile.TemporaryFile # 内存中创建文件,文件不会存储在磁盘,关闭后即删除(可以使用)
- tempfile.NamedTemporaryFile(delete=True) 当delete=True时,作用跟上面一样,当是False时,会存储在磁盘(可以使用)
3、示例介绍
以下几种方式分别介绍了安全的创建临时文件及不安全的方式。
3.1 不正确示例:
不正确1:
import os import tempfile # This will most certainly put you at risk tmp = os.path.join(tempfile.gettempdir(), filename) if not os.path.exists(tmp): with open(tmp, "w") file: file.write("defaults")
不正确2:
import os import tempfile open(tempfile.mktemp(), "w")
不正确3:
filename = "{}/{}.tmp".format(tempfile.gettempdir(), os.getpid()) open(filename, "w")
3.2 正确示例
正确1:
fd, path = tempfile.mkstemp() try: with os.fdopen(fd, 'w') as tmp: # do stuff with temp file tmp.write('stuff') finally: os.remove(path)
正确2:
# 句柄关闭,文件即删除 with tempfile.TemporaryFile() as tmp: # Do stuff with tmp tmp.write('stuff')
正确3:
tmp = tempfile.NamedTemporaryFile(delete=True) try: # do stuff with temp tmp.write('stuff') finally: tmp.close() # 文件关闭即删除
相关免费学习推荐:python教程(视频)
Atas ialah kandungan terperinci 学习如何正确使用Python临时文件. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel ini bertujuan untuk menyelesaikan kesilapan "beban DLL gagal" yang disebabkan oleh kegagalan import modul PSYCOPG2 apabila menggunakan Django 3.0.5 dan pangkalan data PostgreSQL. Kami akan menganalisis punca kesilapan dan menyediakan penyelesaian terperinci, termasuk menyemak konfigurasi pangkalan data dan memasang kebergantungan yang diperlukan untuk memastikan bahawa projek Django berjaya menyambung ke pangkalan data PostgreSQL.

Artikel ini bertujuan untuk menyelesaikan masalah yang apabila menggunakan persamaan kosinus, hasilnya sentiasa 1. Dengan menganalisis contoh kod dan struktur model, kita akan menyelam ke dalam apa yang menyebabkan masalah ini dan menyediakan penyelesaian. Memahami sifat kesamaan kosinus, dan kesan arah vektor dan magnitud, adalah kunci untuk menyelesaikan masalah. Artikel ini akan menggabungkan contoh kod pytorch untuk membantu pembaca lebih memahami dan menggunakan persamaan kosinus.

Artikel ini menerangkan cara menggunakan panda untuk memecah data data mengikut gelung stesen tertentu. Ia amat sesuai untuk memproses data talian bas dan memisahkan data baris tunggal yang mengandungi pelbagai gelung ke dalam perjalanan bebas. Melalui kedua-dua kaedah GroupBy dan numpy.array_split, data data boleh dibahagikan kepada pelbagai sub-data mengikut ciri-ciri yang berulang secara berkala di laman web ini. Setiap sub-dataRame mewakili perjalanan lengkap.

Tutorial ini memperincikan cara memanfaatkan modul XML.etree.elementtree Python untuk menghuraikan fail XML dan dengan cekap mengekstrak semua kamus atributnya dari elemen XML tertentu, dan kemudian kumpulkan kamus atribut ini ke dalam senarai python. Melalui contoh kod tertentu, pembaca akan belajar bagaimana untuk melintasi struktur XML, atribut elemen akses, dan menggunakan kaedah tambahan senarai untuk mencapai pengagregatan data yang berkesan.

Tutorial ini menyelidiki bagaimana untuk mengakses lajur dengan betul dalam CTE (Ekspresi Jadual Biasa) dalam SQLalChemy Orm. Kami akan menerangkan bagaimana CTE dianggap sebagai objek jadual di SQLalChemy dan menunjukkan secara terperinci bagaimana untuk mengakses lajur hasil CTE melalui sifat .c atau .columns, terutamanya apabila CTE melibatkan gabungan pelbagai meja. Pada masa yang sama, senario alias yang berkenaan juga akan dijelaskan untuk membantu pemaju menggunakan SQLalChemy untuk memproses pertanyaan kompleks dengan lebih cekap.

Gunakan kaedah yang lebih rendah () untuk menukar rentetan ke huruf kecil. Kaedah ini mengembalikan rentetan baru, meninggalkan rentetan asal tidak berubah. Sebagai contoh, "HelloWorld" .lower () output "HelloWorld"; nombor, ruang, dan simbol tidak terjejas; Selalunya digunakan untuk perbandingan yang mengabaikan kes, seperti pengesahan input pengguna.

Tomakeapostrequestinpython, firstInstallandImportTherequestSlibrary, thenuserequests.post () withdata, json, orheadersasneededtosendformdata, json, orauthenticatedRequests.

Menggunakan set () untuk membandingkan panjang adalah kaedah yang paling mudah dan paling berkesan. Ia sesuai untuk unsur -unsur hashable dan dinilai oleh len (lst) == len (set (lst)) untuk menentukan sama ada ia unik; 2. Menggunakan gelung untuk menggabungkan set boleh mencapai penamatan awal. Duplikasi ditemui semasa traversal dan palsu akan dikembalikan dengan serta -merta, yang sesuai untuk senarai dan senario besar di mana mungkin terdapat pertindihan awal; 3. Gunakan koleksi.Counter untuk mendapatkan kekerapan elemen, dan kemudian tentukan sama ada semua tuduhan adalah 1. Walaupun ia mempunyai fungsi yang komprehensif, prestasinya rendah, dan ia sesuai untuk situasi di mana maklumat frekuensi tambahan diperlukan. Untuk unsur-unsur yang tidak hancur, anda hanya boleh menggunakan gelung bersarang untuk melakukan perbandingan O (n²), tetapi ia tidak cekap, jadi disyorkan untuk menggunakan kaedah yang ditetapkan dalam kebanyakan kes.


Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT
Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Artikel Panas

Alat panas

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.
