Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara untuk menjalankan arahan Unix dalam program Python anda

Cara untuk menjalankan arahan Unix dalam program Python anda

WBOY
WBOYasal
2023-08-30 10:45:121398semak imbas

Cara untuk menjalankan arahan Unix dalam program Python anda

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命令。

os.system()

此问题的一个解决方案是使用 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

Ini menunjukkan bahawa penterjemah Python menganggap ls sebagai pembolehubah dan memerlukannya untuk ditakrifkan (iaitu dimulakan), dan tidak menganggapnya sebagai arahan Unix. #🎜🎜#

os.system()

#🎜🎜#Satu penyelesaian kepada masalah ini ialah menggunakan 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

Panggil()

#🎜🎜#Walaupun 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 subproses untuk mengembalikan tarikh, tetapi mari kita jadikan contoh itu lebih menarik. #🎜🎜# rrreee #🎜🎜#Contoh di atas boleh dijalankan dengan lebih mudah menggunakan check_output() seperti yang ditunjukkan di bawah: #🎜🎜# rrreee #🎜🎜#Keluaran skrip di atas ialah: #🎜🎜# rrreee #🎜🎜#Contoh di atas menunjukkan fleksibiliti menggunakan fungsi subproses yang berbeza dan cara kita boleh menghantar keputusan kepada pembolehubah untuk operasi selanjutnya. #🎜🎜#

Kesimpulan

#🎜🎜#Seperti yang telah kita lihat dalam tutorial ini, arahan Unix boleh dipanggil dan dilaksanakan menggunakan modul 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn