Menjalankan Perintah Bash dalam Python
Anda mungkin menghadapi ralat semasa menjalankan perintah Bash dalam skrip Python pada pelayan, walaupun kod yang sama berfungsi secara tempatan. Satu sebab biasa untuk ini ialah cara berbeza Bash digunakan oleh sistem pengendalian.
Memahami Bash
Dalam Python, anda boleh menjalankan perintah Bash menggunakan modul subproses. Walau bagaimanapun, tingkah laku lalai adalah menggunakan /bin/sh, iaitu cangkerang minimum yang tidak menyokong semua ciri Bash. Jika anda memerlukan sintaks khusus Bash, anda mesti menyatakan secara eksplisit Bash boleh laku sebagai:
subprocess.run(command, shell=True, executable='/bin/bash')
Shell vs. No Shell
Anda boleh menggunakan subprocess.run( ) dengan shell=True atau shell=False. Dengan shell=True, anda menyediakan perintah rentetan tunggal yang dihuraikan oleh shell. Dengan shell=False, anda menghantar senarai argumen rentetan kepada boleh laku tanpa menggunakan shell.
Menggunakan shell=False mengelakkan ciri shell tetapi memerlukan penghuraian tepat perintah menjadi argumen. Fungsi shlex.split() boleh membantu dengan ini.
subprocess.run(shlex.split(command)) # shell=False
Penyahkodan Teks
Secara lalai, output subproses disediakan sebagai bait. Untuk menyahkodnya menjadi rentetan Unicode, gunakan text=True.
subprocess.run(command, shell=True, text=True)
Menyelesaikan masalah
Jika anda masih menghadapi ralat, penting untuk menyemak:
Atas ialah kandungan terperinci Mengapa Perintah Bash Saya Gagal dalam Python pada Pelayan Tetapi Berfungsi Secara Tempatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!