Python OS模块

Python中的OS模块及实例

Python 中的 OS 模块提供了与操作系统交互的功能。OS属于Python的标准工具模块。这个模块提供了一种可移植的方式来使用依赖于操作系统的功能。osos.path 模块包括许多与文件系统交互的函数。

处理当前工作目录

将当前工作目录(CWD)视为一个文件夹,Python在其中运行。每当文件只通过名字被调用时,Python 假设它从 CWD 开始,这意味着只有当文件在 Python 的 CWD 中时,只用名字的引用才会成功。注意:Python 脚本运行的文件夹被称为当前目录。这并不是Python脚本所在的路径。获取当前工作目录为了获取当前工作目录的位置,使用了os.getcwd()。

例子:

# Python program to explain os.getcwd() method 
          
# importing os module 
import os 
      
# Get the current working 
# directory (CWD) 
cwd = os.getcwd() 
      
# Print the current working 
# directory (CWD) 
print("Current working directory:", cwd) 

输出:

Current working directory: /home/nikhil/Desktop/gfg

改变当前工作目录

要改变当前工作目录(CWD),需要使用os.chdir()方法。这个方法将CWD改变为一个指定的路径。它只接受一个参数作为新的目录路径。

注意:当前工作目录是Python脚本所处的文件夹。

例子:

# Python program to change the 
# current working directory 
    
    
import os 
    
# Function to Get the current  
# working directory 
def current_path(): 
    print("Current working directory before") 
    print(os.getcwd()) 
    print() 
    
    
# Driver's code 
# Printing CWD before 
current_path() 
    
# Changing the CWD 
os.chdir('../') 
    
# Printing CWD after 
current_path() 

输出:

Current working directory before
C:\Users\Nikhil Aggarwal\Desktop\gfg

Current working directory after
C:\Users\Nikhil Aggarwal\Desktop

创建一个目录

在操作系统模块中,有不同的方法可用于创建一个目录。这些方法是–

  • os.mkdir()
  • os.makedirs()

使用os.mkdir()

os.mkdir()方法在Python中用来创建一个名为path的目录,并指定数字模式。如果要创建的目录已经存在,该方法会引发FileExistsError。

例子:

# Python program to explain os.mkdir() method 
  
# importing os module 
import os 
  
# Directory 
directory = "GeeksforGeeks"
  
# Parent Directory path 
parent_dir = "D:/Pycharm projects/"
  
# Path 
path = os.path.join(parent_dir, directory) 
  
# Create the directory 
# 'GeeksForGeeks' in 
# '/home / User / Documents' 
os.mkdir(path) 
print("Directory '% s' created" % directory) 
  
# Directory 
directory = "Geeks"
  
# Parent Directory path 
parent_dir = "D:/Pycharm projects"
  
# mode 
mode = 0o666
  
# Path 
path = os.path.join(parent_dir, directory) 
  
# Create the directory 
# 'GeeksForGeeks' in 
# '/home / User / Documents' 
# with mode 0o666 
os.mkdir(path, mode) 
print("Directory '% s' created" % directory) 

输出:

Directory 'GeeksforGeeks' created
Directory 'Geeks' created

使用 os.makedirs()

Python中的os.makedirs()方法用于递归地创建一个目录。这意味着在创建叶子目录时,如果缺少任何中间层次的目录,os.makedirs()方法将创建它们全部。

例子:

# Python program to explain os.makedirs() method 
      
# importing os module 
import os 
      
# Leaf directory 
directory = "Nikhil"
      
# Parent Directories 
parent_dir = "D:/Pycharm projects/GeeksForGeeks/Authors"
      
# Path 
path = os.path.join(parent_dir, directory) 
      
# Create the directory 
# 'Nikhil' 
os.makedirs(path) 
print("Directory '% s' created" % directory) 
      
# Directory 'GeeksForGeeks' and 'Authors' will 
# be created too 
# if it does not exists 
      
      
      
# Leaf directory 
directory = "c"
      
# Parent Directories 
parent_dir = "D:/Pycharm projects/GeeksforGeeks/a/b"
      
# mode 
mode = 0o666
      
path = os.path.join(parent_dir, directory) 
      
# Create the directory 'c' 
      
os.makedirs(path, mode) 
print("Directory '% s' created" % directory) 
      
      
# 'GeeksForGeeks', 'a', and 'b' 
# will also be created if 
# it does not exists 
      
# If any of the intermediate level 
# directory is missing 
# os.makedirs() method will 
# create them 
      
# os.makedirs() method can be 
# used to create a directory tree 

输出:

Directory 'Nikhil' created
Directory 'c' created

用Python列出文件和目录

Python中的os.listdir()方法是用来获取指定目录下的所有文件和目录的列表。如果我们没有指定任何目录,那么将返回当前工作目录中的文件和目录列表。

例子:

# Python program to explain os.listdir() method 
      
# importing os module 
import os 
  
# Get the list of all files and directories 
# in the root directory 
path = "/"
dir_list = os.listdir(path) 
  
print("Files and directories in '", path, "' :") 
  
# print the list 
print(dir_list) 

输出:

Files and directories in ' / ' :
['sys', 'run', 'tmp', 'boot', 'mnt', 'dev', 'proc', 'var', 'bin', 'lib64', 'usr', 
'lib', 'srv', 'home', 'etc', 'opt', 'sbin', 'media']

使用Python删除目录或文件

OS模块证明了在Python中删除目录和文件的不同方法。这些方法是–

  • 使用os.remove()
  • 使用os.rmdir()

使用 os.remove()

Python中的os.remove()方法用于移除或删除一个文件路径。这个方法不能移除或删除一个目录。如果指定的路径是一个目录,那么该方法将引发 OSError。

例子: 假设文件夹中包含的文件是。

Python中的OS模块及实例

# Python program to explain os.remove() method 
      
# importing os module 
import os 
      
# File name 
file = 'file1.txt'
      
# File location 
location = "D:/Pycharm projects/GeeksforGeeks/Authors/Nikhil/"
      
# Path 
path = os.path.join(location, file) 
      
# Remove the file 
# 'file.txt' 
os.remove(path) 

输出:

Python中的OS模块及实例

使用 os.rmdir()

Python中的os.rmdir()方法用于移除或删除一个空目录。如果指定的路径不是一个空目录,将引发 OSError。

例子: 假设这些目录是

Python中的OS模块及实例

# Python program to explain os.rmdir() method 
      
# importing os module 
import os 
      
# Directory name 
directory = "Geeks"
      
# Parent Directory 
parent = "D:/Pycharm projects/"
      
# Path 
path = os.path.join(parent, directory) 
      
# Remove the Directory 
# "Geeks" 
os.rmdir(path) 

输出:

Python中的OS模块及实例

常用的函数

1. os.name:

这个函数给出了导入的依赖于操作系统的模块的名称。目前已注册的名称有:’posix’、’nt’、’os2’、’ce’、’java’和’riscos’。

import os
  
print(os.name)

输出:

posix

注意:在不同的解释器上可能会有不同的输出,比如你在这里运行代码时,’posix’。

2. os.error

本模块中的所有函数在文件名和路径无效或不可访问,或其他参数类型正确,但不被操作系统接受的情况下引发OSError。os.error是内置OSError异常的一个别名。

import os
  
  
try:
    # If the file does not exist,
    # then it would throw an IOError
    filename = 'GFG.txt'
    f = open(filename, 'rU')
    text = f.read()
    f.close()
  
# Control jumps directly to here if 
# any of the above lines throws IOError.    
except IOError:
  
    # print(os.error) will <class 'OSError'>
    print('Problem reading: ' + filename)
      
# In any case, the code then continues with 
# the line after the try/except

输出:

Problem reading: GFG.txt

3. os.popen()

这个方法打开一个通往或来自命令的管道。根据模式是’r’还是’w’,返回值可以是读或写。语法。

 os.popen(command[, mode[, bufsize]])

参数mode和bufsize不是必要的参数,如果没有提供,mode将采用默认的’r’。

import os
fd = "GFG.txt"
  
# popen() is similar to open()
file = open(fd, 'w')
file.write("Hello")
file.close()
file = open(fd, 'r')
text = file.read()
print(text)
  
# popen() provides a pipe/gateway and accesses the file directly
file = os.popen(fd, 'w')
file.write("Hello")
# File not closed, shown in next function.

输出:

Hello

注意:popen()的输出不会被显示,会有直接的变化进入文件。

4. os.close()

关闭文件描述符fd。一个用open()打开的文件,只能用close()来关闭。但通过os.popen()打开的文件,可以用close()或os.close()关闭。如果我们试图用 os.close() 关闭一个用 open() 打开的文件,Python 会抛出 TypeError。

import os
  
  
fd = "GFG.txt"
file = open(fd, 'r')
text = file.read()
print(text)
os.close(file)

输出:

Traceback (most recent call last):
  File "C:\Users\GFG\Desktop\GeeksForGeeksOSFile.py", line 6, in 
    os.close(file)
TypeError: an integer is required (got type _io.TextIOWrapper)

注意:同样的错误可能不会被抛出,由于不存在文件或权限特权。

5. os.rename()

一个文件old.txt可以被重命名为new.txt,使用函数os.rename()。只有当文件存在并且用户有足够的权限来改变文件时,文件的名称才会改变。

import os
  
  
fd = "GFG.txt"
os.rename(fd,'New.txt')
os.rename(fd,'New.txt')

输出:

Traceback (most recent call last):
  File "C:\Users\GFG\Desktop\ModuleOS\GeeksForGeeksOSFile.py", line 3, in 
    os.rename(fd,'New.txt')
FileNotFoundError: [WinError 2] The system cannot find the
file specified: 'GFG.txt' -> 'New.txt'

理解输出。一个文件名 “GFG.txt “存在,因此当第一次使用os.rename()时,该文件被重命名。第二次调用函数os.rename()时,文件 “New.txt “存在,而不是 “GFG.txt”,因此Python抛出FileNotFoundError。

6. os.remove()

使用Os模块,我们可以使用remove()方法在系统中删除一个文件。要删除一个文件,我们需要把文件的名称作为一个参数传给它。

import os #importing os module.
  
os.remove("file_name.txt") #removing the file.

操作系统模块在我们和操作系统之间提供了一个抽象层。当我们使用OS模块时,总是根据操作系统指定绝对路径,代码可以在任何操作系统上运行,但我们需要准确地改变路径。如果你试图删除一个不存在的文件,你会得到FileNotFoundError。

7. os.path.exists()

这个方法将通过传递文件名作为参数来检查一个文件是否存在。操作系统模块有一个名为PATH的子模块,通过它我们可以执行许多其他功能。

import os 
#importing os module
  
result = os.path.exists("file_name") #giving the name of the file as a parameter.
  
print(result)

输出:

False

在上面的代码中,如果文件不存在,它将给出False的输出。如果文件存在,它将给我们输出True。

8. os.path.getsize()

在这个方法中,Python将给我们以字节为单位的文件大小。要使用这个方法,我们需要把文件的名称作为一个参数传给它。

import os #importing os module
  
size = os.path.getsize("filename")
  
print("Size of the file is", size," bytes.")

输出:

Size of the file is 192 bytes.

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程