Python os.fchdir() 方法



Python os.fchdir() 方法将当前工作目录更改为文件描述符所代表的目录。该描述符必须引用一个已打开的目录,而不是一个已打开的文件。

执行所有命令的目录称为当前工作目录。它可以是数据库文件、文件夹、库或目录。当前工作目录也称为当前工作目录或仅工作目录。此方法不返回值。

注意:此方法仅在 UNIX/LINUX 平台上可用。

语法

以下是Python os.fchdir() 方法的语法:

os.fchdir(fd)

参数

  • fd − 这是一个目录描述符。

返回值

此方法不返回值。

示例 1

以下示例显示了 Python os.fchdir() 方法的使用方法。在这里,当前工作目录更改为文件描述符“fd”所代表的“/tmp”目录。getcwd() 方法 用于了解文件的当前工作目录。

import os, sys

# First go to the "/var/www/html" directory
os.chdir("/var/www/html" )

# Print current working directory
print ("Current working dir : %s" % os.getcwd())

# Now open a directory "/tmp"
fd = os.open( "/tmp", os.O_RDONLY )

# Use os.fchdir() method to change the dir
os.fchdir(fd)

# Print current working directory
print ("Current working dir : %s" % os.getcwd())

# Close opened directory.
os.close( fd )

运行上述程序时,会产生以下结果:

Current working dir : /var/www/html
Current working dir : /tmp

示例 2

如果文件描述符代表的是一个已打开的文件而不是一个已打开的目录,则此方法会引发“NotADirectoryError”异常。

import os

path = "code.txt"

# opening the above path  
# getting the file descriptor associated with it
filedesc = os.open(path, os.O_RDONLY)

# Changing the working directory 
os.fchdir(filedesc)
print("Current working directory is changed succesfully")

# Printing the working directory 
print("The current working directory is:", os.getcwd())

执行上述代码时,我们得到以下输出:

Traceback (most recent call last):
 File "/home/sarika/Desktop/chown.py", line 7, in <module>
   os.fchdir(filedesc)
NotADirectoryError: [Errno 20] Not a directory

示例 3

在这里,我们尝试使用os.fchdir() 方法处理可能的错误。

import os

filepath = "code.txt"

# opening the above path  
# getting the file descriptor associated with it
try :
   filedesc = os.open(filepath, os.O_RDONLY)
   # Changing the working directory
   try :
      os.fchdir(filedesc)
      print("Current working directory is changed successfully")
      
	  # Printing the working directory 
      print("The current working directory is:", os.getcwd())

   # If file descriptor does not represents a directory
   except NotADirectoryError:
      print("The provided file descriptor does not represent an opened directory")
# If the file path does not exists
except FileNotFoundError:
   print("The file path does not exists")
# permission related issue while opening the provided path
except PermissionError:
   print("Permission is denied")

以下是上述代码的输出:

The provided file descriptor does not represent an opened directory
python_file_methods.htm
广告