python的os模块常用方法的理解和实践,如os.getcwd() os.listdir(path) os.path.join(path1, path2) 等

        在接触到和python相关的代码时,我发现通常会在头文件import os,然后在程序中利用os来调用一些方法,从而实现对文件或路径的操作。在这里总结一下平时遇到的一些os模块下的方法,并且通过一个小案例来把经常用的os模块下的方法联系起来,以便学以致用。

        用到的主要有以下这些:

os.getcwd()               #获得你当前.py文件所在的目录,也就是你当前的.py文件所在的位置

os.listdir(path)              #path为自定义的目录路径,通过该语句会返回一个字符串列表,该列表中的元素为目录路径path下的文件的名字或者是目录路径path下的目录的名字,因为该路径下可能嵌套的又是另外一个目录。

os.path.join(path1, path2)    #用于连接两个路径,连接之后的路径相当于path1/path2。

os.path.abspath(filenmae)    #filename是一个文件的名字,这个语句用于获取文件filename的绝对路径,绝对路径就是有头有尾,这个路径是唯一的。

os.path.isdir(path),os.path.isfile(path),os.path.exists(path)     #path是一个路径,可以对应一个具体的文件,也可以对应一个目录,这三个语句的意思分别是判断当前path是不是一个目录,判断当前path是不是一个文件,判断当前path是否存在。 

对于上面的这几个函数,我们用代码来测试以下,注释说明我都写到代码里了:

import os                                           
# 先用os.getcwd 获得我当前文件所处的路径                          
print('os.getcwd()==', os.getcwd())                 
#  os.getcwd()== /home/liubs/ottertune/test   这是打印输出
                                                    
# 再用os.listdir 获得当前文件所在目录下的所有文件,也就是同级别的所有文件,以字符串列表的形
# 注意,我当前文件所在目录下不止一个文件,还有其他的文件。                      
path1 = '/home/liubs/ottertune/test'                
print('os.listdir(path=path1)==', os.listdir(path=pa
# os.listdir(path=path1)== ['test01_changeconfig.py'
# operate_system_os.py是我现在运行的文件。                    
                                                    
                                                    
# os.path.join用于将两个路径进行相加,并且在两个字符串之间加上‘/’           
path2 = os.path.join(path1, os.listdir(path1)[1])   
print('os.path.join==', path2)                      
# path1是我定义的一个路径,然后获得该路径下的一个文件名,将其进行连接              
# 输出结果如下:os.path.join== /home/liubs/ottertune/test/t
                                                    
                                                    
# os.path.abspath获取文件的绝对路径,包括文件名                    
path3 = os.path.abspath('operate_system_os.py')     
print('os.path.abspath==', path3)                   
# os.path.abspath== /home/liubs/ottertune/test/opera
                                                    
# os.path.exists,os.path.isdir,os.path.isfile,分别为路径是
print(os.path.exists('test04_knobsselect.py'))      
# 这里打印出来的为:True     因为test04_knobsselect.py这个文件确实存在。

打印结果如下:

 小案例的实现:

问题:打印出当前目录中有test关键字的文件的绝对路径信息

# 1、获得当前所在的文件目录路径                                                                                      
path_str = os.getcwd()                                                                                 
# 打印出当前文件目录路径下所有的文件名或目录名                                                                               
path_list = os.listdir(path_str)                                                                       
# 在当前目录下新建一个目录,名字为 'this_test00'                                                                       
new_file_path = 'this_test00'                                                                          
# 定义关键字段,即要查找出的是所有带有关键字段的文件的路径                                                                         
sub_str = 'test'                                                                                       
# 查看新建的目录名是否已经在当前目录下的列表中存在                                                                             
# 如果不存在,则在当前目录下新建一个目录                                                                                  
if new_file_path not in path_list:                                                                     
    os.mkdir(new_file_path)                                                                            
# 遍历当前目录下的所有文件名和目录名                                                                                    
for i in path_list:                                                                                    
    # 如果是一个目录名,则删除该目录                                                                                  
    if os.path.isdir(i):                                                                               
        os.rmdir(i)                                                                                    
    # 如果是一个文件名,则查看文件名中是否包含关键字段,这里用到find方法,如果不包含则返回值为-1,不等于-1则是包含关键字段                                   
    if i.find(sub_str) != -1:                                                                          
        # 将当前文件所在的目录和包含关键字的文件名进行连接并进行打印。                                                               
        path = os.path.join(path_str, i)                                                               
        print(path)                                                                                    

结果如下:

 

<think>好的,我现在需要解释os.getcwd()os.listdir()这两个函数。首先,我得确认自己对这些函数的理解是否正确。 os.getcwd()应该是获取当前工作目录的,对吧?记得cwd是current working directory的缩写。用户执行Python脚本时,脚本所在的目录就是当前工作目录,这个函数返回的就是那个路径的字符串。比如在终端里运行脚本,路径可能是在用户的主目录下,或者在某个项目文件夹里。这个函数不需要参数,直接调用就能得到结果。 然后是os.listdir(),这个函数应该用来列出指定目录下的所有文件子目录。参数是一个路径字符串,如果不传参数的话,默认应该是当前工作目录,也就是os.getcwd()的结果。返回的是一个列表,里面包含目录下的条目名称。需要注意的是,这个列表不包括'.''..',即使在Unix系统下也是如此。不过,可能需要提醒用户,这个列表里的条目不包含完整路径,只是名字,如果需要操作这些文件,可能需要用os.path.join()来组合路径。 接下来,要确保解释清楚这两个函数的作用使用方法,以及它们的区别。可能需要举例说明,比如先获取当前目录,然后列出其中的内容。还要注意中文表达,结构要清晰,分步骤说明,让用户容易理解。 另外,需要检查是否有常见的错误用法,比如os.listdir()的参数是否需要是绝对路径,或者如果目录不存在会抛出异常。这时候可能需要提醒用户处理异常,比如用try-except块来捕获FileNotFoundError。 还有,是否要提到这两个函数属于os模块,所以在使用前需要import os?是的,必须提醒用户先导入模块。 现在,组织一下回答的结构。先分别介绍每个函数,说明其功能、语法、返回值,然后举例说明如何一起使用。最后总结两者的区别常见应用场景。 例如: 1. os.getcwd() - 作用:获取当前工作目录的绝对路径 - 语法:os.getcwd() - 返回:字符串,如'/home/user/projects' 2. os.listdir() - 作用:列出指定目录下的内容 - 语法:os.listdir(path) - 参数:path可选,默认当前目录 - 返回:列表,包含文件名子目录名 然后给出示例代码: import os current_dir = os.getcwd() print(f"当前目录:{current_dir}") files = os.listdir() print("目录内容:", files) 或者指定其他路径: files_in_home = os.listdir('/home/user') 需要注意路径分隔符在不同操作系统下的差异,比如Windows用反斜杠,但Python中应该使用正斜杠或者双反斜杠。 最后,常见应用场景,比如遍历处理文件,检查目录是否存在,或者在脚本中动态获取路径等。 可能还需要提到,os.listdir()不会递归列出子目录中的内容,如果需要的话,可以用os.walk()。 总结时,强调两者的协作:先获取当前目录,再列出其中的内容,是文件操作的基础步骤。 检查是否有遗漏点,比如错误处理,或者权限问题,比如如果用户没有权限访问某个目录,os.listdir()会抛出PermissionError。但可能不需要深入,除非用户问到。 现在,把这些内容用中文组织成用户容易理解的步骤,避免使用专业术语过多,保持口语化但准确。</think>让我们一步步了解 `os.getcwd()` `os.listdir()` 的功能及用法: --- ### 一、`os.getcwd()`:获取当前工作目录 1. **作用** 返回当前 Python 脚本运行的**绝对路径**(字符串格式)。 例如:`C:\Users\YourName\project` 或 `/home/username/project`。 2. **语法** ```python os.getcwd() # 无需参数 ``` 3. **示例** ```python import os current_dir = os.getcwd() print(f"当前工作目录:{current_dir}") # 输出示例:当前工作目录:/Users/yourname/Documents ``` --- ### 二、`os.listdir()`:列出目录内容 1. **作用** 返回指定目录下的**所有文件子目录名**(以列表形式)。 **不包含`.`(当前目录)`..`(上级目录)**。 2. **语法** ```python os.listdir(path=".") # 默认参数为当前目录 ``` 3. **参数** - `path`(可选):目录路径。若省略,默认使用 `os.getcwd()` 的结果。 4. **示例** ```python import os # 列出当前目录内容 files = os.listdir() print("当前目录内容:", files) # 输出示例:当前目录内容:['file1.txt', 'images', 'data'] # 列出指定目录内容 home_files = os.listdir("/home/user/Downloads") ``` --- ### 三、协作使用示例 ```python import os # 获取当前目录 current_dir = os.getcwd() print(f"当前工作目录:{current_dir}") # 列出当前目录内容 items = os.listdir(current_dir) # 等价于 os.listdir() print("目录内容:", items) ``` --- ### 四、区别总结 | 函数 | 作用 | 返回值类型 | 参数 | |---------------|--------------------------|------------|--------------| | `os.getcwd()` | 获取当前目录绝对路径 | 字符串 | 无 | | `os.listdir()`| 列出目录下文件子目录名 | 列表 | 路径(可选) | --- ### 五、常见用途 1. **文件批量操作** 结合 `os.listdir()` `os.path.join()` 遍历处理文件: ```python for filename in os.listdir(): full_path = os.path.join(os.getcwd(), filename) if os.path.isfile(full_path): print(f"处理文件:{filename}") ``` 2. **动态路径管理** 在脚本中根据当前目录定位资源(如配置文件、数据文件)。 --- ### 六、注意事项 1. **路径不存在时** `os.listdir("无效路径")` 会抛出 `FileNotFoundError`,建议用 `try-except` 处理: ```python try: os.listdir("不存在的路径") except FileNotFoundError: print("目录不存在!") ``` 2. **隐藏文件系统文件** `os.listdir()` 会列出隐藏文件(如 `.gitignore`),但需注意操作系统差异。 3. **非递归列出** 仅返回直接子项,如需递归遍历子目录,使用 `os.walk()`。 --- 通过这两个函数,你可以轻松定位操作文件系统中的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值