CopyRight©2021 139GAME.COM.CN All Right Reserved
如何在Linux Python环境中获取或更改当前工作目录
本文介绍在Python环境中获取或更改当前工作目录的方法,以Linux平台为例。
在Python上处理目录中的文件时,建议使用绝对路径。但是,如果您使用的是相对路径,则需要了解当前工作目录的概念以及如何查找或更改当前工作目录。绝对路径指定从根目录开始的文件或目录位置,而相对路径从当前工作目录开始。
运行Python脚本时,当前工作目录将设置为执行脚本的目录。
os python模块提供了一种与操作系统交互的可移植方式,该模块是标准Python库的一部分,并包含用于查找和更改当前工作目录的方法。
在Python中获取当前的工作目录
Python中os模块的getcwd()方法返回一个字符串,其中包含当前工作目录的绝对路径,返回的字符串不包含斜杠字符:
os.getcwd()
要使用os模块方法,必须在文件顶部导入模块。
下面是显示如何打印当前工作目录的示例:
# Import the os module import os # Get the current working directory cwd = os.getcwd() # Print the current working directory print("Current working directory: {0}".format(cwd)) # Print the type of the returned object print("os.getcwd() returns an object of type: {0}".format(type(cwd)))
输出将如下所示:
Current working directory: /home/ywnz/Desktop
os.getcwd() returns an object of type:
如果要查找脚本所在的目录,请使用
os.path.realpath(__file__)
它将返回一个字符串,其中包含正在运行的脚本的绝对路径。
在Python中更改当前工作目录
要在Python中更改当前工作目录,请使用chdir()方法:
os.chdir(path)
该方法接受一个参数,即您要更改到的目录的路径,path参数可以是绝对值或相对值。
这是一个例子:
# Import the os module import os # Print the current working directory print("Current working directory: {0}".format(os.getcwd())) # Change the current working directory os.chdir('/tmp') # Print the current working directory print("Current working directory: {0}".format(os.getcwd()))
输出将如下所示:
Current working directory: /home/ywnz/Desktop
Current working directory: /tmp
提供给chdir()方法的参数必须是目录,否则会引发NotADirectoryError异常。如果指定的目录不存在,则会引发FileNotFoundError异常。如果运行脚本的用户没有必要的权限,则会引发PermissionError异常:
# Import the os module import os path = '/var/www' try: os.chdir(path) print("Current working directory: {0}".format(os.getcwd())) except FileNotFoundError: print("Directory: {0} does not exist".format(path)) except NotADirectoryError: print("{0} is not a directory".format(path)) except PermissionError: print("You do not have permissions to change to {0}".format(path))
结论:要在Python中找到当前的工作目录,请使用os.getcwd(),要更改当前的工作目录,请使用os.chdir(path)。
Linux文件(目录)命名规范:驾驭开源操作系统,精进文件命名艺术
在介绍了Linux系统中的目录结构之后,读者一定想知道如何命名文件或目录。
我们知道,在Linux系统中,一切都是文件。既然是文件,就必须有文件名。与其他系统相比,Linux操作系统对文件或目录命名的要求相对宽松。
Linux 系统中,文件和目录的命名规则如下:
除了字符“/”之外,所有的字符都可以使用,但是要注意,在目录名或文件名中,使用某些特殊字符并不是明智之举。例如,在命名时应避免使用 <、>、?、* 和非打印字符等。如果一个文件名中包含了特殊字符,例如空格,那么在访问这个文件时就需要使用引号将文件名括起来
目录名或文件名的长度不能超过 255 个字符。
目录名或文件名是区分大小写的。如 DOG、dog、Dog 和 DOg ,是互不相同的目录名或文件名,但使用字符大小写来区分不同的文件或目录,也是不明智的。
与 Windows 操作系统不同,文件的扩展名对 Linux 操作系统没有特殊的含义,换句话说,Linux 系统并不以文件的扩展名开分区文件类型。例如,dog.exe 只是一个文件,其扩展名 .exe 并不代表此文件就一定是可执行文件。
需要注意的是,在 Linux 系统中,硬件设备也是文件,也有各自的文件名称。Linux 系统内核中的 udev 设备管理器会自动对硬件设备的名称进行规范,目的是让用户通过设备文件的名称,就可以大致猜测处设备的属性以及相关信息。
udev 设备管理器会一直以进程的形式运行,并侦听系统内核发出的信号来管理位于 /dev 目录下的设备文件。
罗列出了Linux 系统中常见硬件设备的文件名。
Linux硬件设备文件名称
硬件设备 文件名称 /dev/hd[a-d],现在的 IDE设备已经很少见了,因此一般的硬盘设备会以 /dev/sd 开头。
SCSI/SATA/U盘
软驱 /dev/fd[0-1]
打印机 /dev/lp[0-15]
光驱 /dev/cdrom
鼠标 /dev/mouse
磁带机 /dev/st0 或 /dev/ht0