在ubuntu中使用Python显示目录的内容
我在主目录中有一个.py文件,其中包含以下三行:在ubuntu中使用Python显示目录的内容,python,os.system,Python,Os.system,我在主目录中有一个.py文件,其中包含以下三行: import os os.system("cd Desktop/") os.system("ls") 我希望它从“桌面”目录中“ls”,但它显示/home目录的内容。 我看了这些页面: 但我不知道该怎么办。有人能帮我吗?这两个电话是分开的。连续调用os.system之间没有上下文,因为每次调用都会生成一个新的shell。首先os.system(“cd Desktop/”)将目录切换到Desktop并退出。然后,一个新的shell在原
import os
os.system("cd Desktop/")
os.system("ls")
我希望它从“桌面”目录中“ls”,但它显示/home目录的内容。我看了这些页面:
但我不知道该怎么办。有人能帮我吗?这两个电话是分开的。连续调用
os.system
之间没有上下文,因为每次调用都会生成一个新的shell。首先os.system(“cd Desktop/”)
将目录切换到Desktop
并退出。然后,一个新的shell在原始文件夹中执行ls
尝试使用&&
链接命令:
import os
os.system("cd Desktop/ && ls")
这将显示目录桌面
的内容
织物 如果您的应用程序将在<>代码>操作系统>代码>使用时,您可能会考虑使用。它允许您使用更高级别的语言构造,如ContextManager,以简化命令行调用:
from fabric.operations import local
from fabric.context_managers import lcd
with lcd("Desktop/"): # Prefixes all commands with `cd Desktop && `
contents=local("ls", capture=True)
您必须考虑<代码>操作系统.Stase<代码>执行子shell中的命令。因此,1)python启动一个子shell,2)更改目录,3)然后子shell完成,4)返回到以前的状态 要强制更改当前目录,应执行以下操作:
os.chdir("Desktop")
始终尝试通过其他方式执行此操作,即通过
os.system
(os.listdir
),或者通过执行子进程以外的操作(这是shell中用于命令控制的优秀模块)尝试操作系统(“ls Desktop/”)是否有需要使用外部进程的原因,与os.chdir
和os.listdir
相比,另请注意:如果确实需要运行外部进程,os.system
比使用各种子进程
功能更慢/更不安全/更不灵活os.system
在子shell中启动所有命令(这可能会导致参数解析、shell元字符等的可靠性和安全性问题),其中类似于子进程的内容。使用命令和参数的列表检查调用
既快又安全。要清楚,可能存在的重复,使用单独的os.system
调用时发生这种情况的原因是,每个os.system
生成一个新的shell来运行命令。因此,新shell更改目录,然后退出。然后生成一个全新的shell(在原始目录中,而不是在更改的目录中)并运行。“ls Desktop/”将更短;)