在ubuntu中使用Python显示目录的内容

在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在原

我在主目录中有一个.py文件,其中包含以下三行:

 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/”将更短;)