Unix ialah sistem pengendalian yang dibangunkan oleh Ken Thompson dan Dennis Ritchie di AT&T Bell Laboratories sekitar tahun 1969. Terdapat banyak arahan Unix yang menarik yang boleh kita gunakan untuk melaksanakan tugas yang berbeza. Persoalannya, bolehkah kita menggunakan arahan sedemikian secara langsung dalam program Python? Itulah yang saya akan tunjukkan kepada anda dalam tutorial ini.
Arahan Unix ls
menyenaraikan semua fail dalam direktori. Jika anda meletakkan ls
sebagaimana adanya ke dalam skrip Python, anda akan mendapat hasil berikut apabila anda menjalankan program: ls
列出目录中的所有文件。如果您将 ls
按原样放入 Python 脚本中,则运行该程序时将得到以下结果:
Traceback (most recent call last): File "test.py", line 1, in <module> ls NameError: name 'ls' is not defined
这表明Python解释器将ls
视为变量并要求对其进行定义(即初始化),并且没有将其视为Unix命令。
此问题的一个解决方案是使用 Python os 模块中的 os.system()
。
正如文档中提到的,os.system()
:
在子 shell 中执行命令(字符串)。这是通过调用标准C函数system()来实现的,并且具有相同的限制。
因此我们可以在Python中运行ls
命令,如下所示:
import os os.system('ls')
这将返回当前目录中的文件列表,这是 .py
程序所在的位置。我当前的目录如下所示:
env unixfile.py workwithexcel
我们再举一个例子。如果要返回当前日期和时间,可以使用Unix命令date
,如下所示:
import os os.system('date')
就我而言,这就是我通过上述脚本得到的结果:
Thu 24 Apr 2022 10:42:41 AM EAT
尽管 os.system()
可以工作,但不推荐使用,因为它被认为有点旧且已弃用。更好的解决方案是 Python 子进程模块中的 call(args)
函数。正如有关此功能的文档中提到的:
运行 args 描述的命令。等待命令完成,然后返回 returncode 属性。
如果我们想使用这种方法运行 ls
Unix 命令,我们可以执行以下操作:
from subprocess import call call('ls')
让我们看看如何使用 subprocess
模块返回日期,但让我们让示例变得更有趣。
import subprocess time = subprocess.Popen('date', stdout=subprocess.PIPE, stderr=subprocess.PIPE) output, err = time.communicate() print('Todays date is ', output)
使用 check_output()
可以更简单地运行上面的示例,如下所示:
import subprocess time = subprocess.check_output('date') print('Todays date is', time)
上述脚本的输出是:
Todays date is b'Thu 24 Apr 2022 10:48:19 AM EAT\n'
上面的例子展示了使用不同的 subprocess
函数的灵活性,以及我们如何将结果传递给变量以进行进一步的操作。
正如我们在本教程中看到的,可以使用 subprocess
rrreee
ls
sebagai pembolehubah dan memerlukannya untuk ditakrifkan (iaitu dimulakan), dan tidak menganggapnya sebagai arahan Unix. #🎜🎜#
os.system()
daripada modul os Python. #🎜🎜#
#🎜🎜#Seperti yang dinyatakan dalam dokumentasi, os.system()
:#🎜🎜#
Laksanakan arahan (rentetan) dalam subkulit. Ini dicapai dengan memanggil sistem fungsi C standard(), dan mempunyai had yang sama.#🎜🎜#Jadi kita boleh menjalankan perintah
ls
dalam Python seperti berikut: #🎜🎜#
rrreee
#🎜🎜#Ini akan mengembalikan senarai fail dalam direktori semasa, di mana program .py
berada. Direktori semasa saya kelihatan seperti ini: #🎜🎜#
rrreee
#🎜🎜# Mari kita berikan satu lagi contoh. Jika anda ingin mengembalikan tarikh dan masa semasa, anda boleh menggunakan perintah Unix date
seperti berikut: #🎜🎜#
rrreee
#🎜🎜#Dalam kes saya, inilah yang saya dapat dengan skrip di atas: #🎜🎜#
rrreee
os.system()
akan berfungsi, ia tidak disyorkan kerana ia dianggap agak lama dan tidak digunakan lagi. Penyelesaian yang lebih baik ialah fungsi call(args)
dalam modul subproses Python. Seperti yang dinyatakan dalam dokumentasi tentang ciri ini: #🎜🎜#
Jalankan arahan yang diterangkan oleh args. Tunggu arahan selesai, kemudian kembalikan atribut returncode.#🎜🎜# Jika kita ingin menjalankan perintah Unix
ls
menggunakan kaedah ini, kita boleh melakukan perkara berikut: #🎜🎜#
rrreee
#🎜🎜# Mari lihat cara menggunakan modul check_output()
seperti yang ditunjukkan di bawah: #🎜🎜#
rrreee
#🎜🎜#Keluaran skrip di atas ialah: #🎜🎜#
rrreee
#🎜🎜#Contoh di atas menunjukkan fleksibiliti menggunakan fungsi subprocess
, yang memberikan banyak fleksibiliti dalam menggunakan arahan Unix melalui ciri-cirinya yang berbeza . Anda boleh mengetahui lebih lanjut tentang modul ini dan fungsinya yang berbeza dalam dokumentasi Python. #🎜🎜#Atas ialah kandungan terperinci Cara untuk menjalankan arahan Unix dalam program Python anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!