python os.path模块和 sys.path.append模块常用方法详解

Python sys.path详解
本文介绍了Python中sys.path的使用方法,包括如何通过sys.path.append()动态添加模块搜索路径,以及如何利用os.path进行文件路径的操作。

转载自:http://blog.youkuaiyun.com/JOJOY_tester/article/details/54575264

 https://www.cnblogs.com/wuxie1989/p/5623435.html


记录下:python 的 sys.path.append()

当我们导入一个模块时:import  xxx,默认情况下python解析器会搜索当前目录、已安装的内置模块和第三方模块,搜索路径存放在sys模块的path中:

[python]  view plain  copy
  1. >>> import sys  
  2. >>> sys.path  
  3. ['''C:\\Python352\\Lib\\idlelib''C:\\Python352\\python35.zip''C:\\Python352\\DLLs''C:\\Python352\\lib''C:\\Python352''C:\\Python352\\lib\\site-packages''C:\\Python352\\lib\\site-packages\\setuptools-28.6.1-py3.5.egg''C:\\Python352\\lib\\site-packages\\pip-8.1.2-py3.5.egg''C:\\Python352\\lib\\site-packages\\requests-2.11.1-py3.5.egg''C:\\Python352\\lib\\site-packages\\xlutils-2.0.0-py3.5.egg''C:\\Python352\\lib\\site-packages\\xlwt-1.1.2-py3.5.egg''C:\\Python352\\lib\\site-packages\\pymongo-3.3.1-py3.5-win-amd64.egg''C:\\Python352\\lib\\site-packages\\pytz-2016.7-py3.5.egg''C:\\Python352\\lib\\site-packages\\zope.interface-4.3.3-py3.5-win-amd64.egg']  
sys.path 返回的是一个列表!

该路径已经添加到系统的环境变量了,当我们要添加自己的搜索目录时,可以通过列表的append()方法;

对于模块和自己写的脚本不在同一个目录下,在脚本开头加sys.path.append('xxx'):

[python]  view plain  copy
  1. import sys  
  2. sys.path.append(’引用模块的地址')  

这种方法是运行时修改,脚本运行后就会失效的。

另外一种方法是:

把路径添加到系统的环境变量,或把该路径的文件夹放进已经添加到系统环境变量的路径内。环境变量的内容会自动添加到模块搜索路径中。

原文:http://www.tuicool.com/articles/EB3miqr

sys模块包含了与python解释器和它的环境有关的函数,这个你可以通过dir(sys)来查看他里面的方法和成员属性。
下面的两个方法可以将模块路径加到当前模块扫描的路径里:
sys.path.append('你的模块的名称')。
sys.path.insert(0,'模块的名称')
永久添加路径到sys.path中,方式有三,如下:

1)将写好的py文件放到 已经添加到系统环境变量的 目录下 ;
2) 在 /usr/lib/python2.6/site-packages 下面新建一个.pth 文件(以pth作为后缀名) 
将模块的路径写进去,一行一个路径,如: vim pythonmodule.pth
/home/liu/shell/config
/home/liu/shell/base 
3) 使用PYTHONPATH环境变量
export PYTHONPATH=$PYTHONPATH:/home/liu/shell/config



os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法。更多的方法可以去查看官方文档:http://docs.python.org/library/os.path.html

1.os.path.abspath(path) 
返回path规范化的绝对路径。 
 
>>> os.path.abspath('test.csv') 
'C:\\Python25\\test.csv' 
 
>>> os.path.abspath('c:\\test.csv') 
'c:\\test.csv' 
 
>>> os.path.abspath('../csv\\test.csv') 
'C:\\csv\\test.csv' 
 
2.os.path.split(path) 
将path分割成目录和文件名二元组返回。 
 
>>> os.path.split('c:\\csv\\test.csv') 
('c:\\csv', 'test.csv') 
>>> os.path.split('c:\\csv\\') 
('c:\\csv', '') 
 
3.os.path.dirname(path) 
返回path的目录。其实就是os.path.split(path)的第一个元素。 
 
>>> os.path.dirname('c:\\csv\test.csv') 
'c:\\' 
>>> os.path.dirname('c:\\csv') 
'c:\\' 
 
4.os.path.basename(path) 
返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素。 
 
>>> os.path.basename('c:\\test.csv') 
'test.csv' 
>>> os.path.basename('c:\\csv') 
'csv' (这里csv被当作文件名处理了) 
>>> os.path.basename('c:\\csv\\') 
'' 
 
5.os.path.commonprefix(list) 
返回list中,所有path共有的最长的路径。 
 
如: 
>>> os.path.commonprefix(['/home/td','/home/td/ff','/home/td/fff']) 
'/home/td' 
 
6.os.path.exists(path) 
如果path存在,返回True;如果path不存在,返回False。 
 
>>> os.path.exists('c:\\') 
True 
>>> os.path.exists('c:\\csv\\test.csv') 
False 
 
7.os.path.isabs(path) 
如果path是绝对路径,返回True。 
 
8.os.path.isfile(path) 
如果path是一个存在的文件,返回True。否则返回False。 
 
>>> os.path.isfile('c:\\boot.ini') 
True 
>>> os.path.isfile('c:\\csv\\test.csv') 
False 
>>> os.path.isfile('c:\\csv\\') 
False 
 
9.os.path.isdir(path) 
如果path是一个存在的目录,则返回True。否则返回False。 
 
>>> os.path.isdir('c:\\') 
True 
>>> os.path.isdir('c:\\csv\\') 
False 
>>> os.path.isdir('c:\\windows\\test.csv') 
False 
 
10.os.path.join(path1[, path2[, ...]]) 
将多个路径组合后返回,第一个绝对路径之前的参数将被忽略。 
 
>>> os.path.join('c:\\', 'csv', 'test.csv') 
'c:\\csv\\test.csv' 
>>> os.path.join('windows\temp', 'c:\\', 'csv', 'test.csv') 
'c:\\csv\\test.csv' 
>>> os.path.join('/home/aa','/home/aa/bb','/home/aa/bb/c') 
'/home/aa/bb/c' 
 
11.os.path.normcase(path) 
在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。 
 
>>> os.path.normcase('c:/windows\\system32\\') 
'c:\\windows\\system32\\' 
 
12.os.path.normpath(path) 
规范化路径。 
 
>>> os.path.normpath('c://windows\\System32\\../Temp/') 
'c:\\windows\\Temp' 
 
12.os.path.splitdrive(path) 
返回(drivername,fpath)元组 
 
>>> os.path.splitdrive('c:\\windows') 
('c:', '\\windows') 
 
13.os.path.splitext(path) 
分离文件名与扩展名;默认返回(fname,fextension)元组,可做分片操作 
 
>>> os.path.splitext('c:\\csv\\test.csv') 
('c:\\csv\\test', '.csv') 
 
14.os.path.getsize(path) 
返回path的文件的大小(字节)。 
 
>>> os.path.getsize('c:\\boot.ini') 
299L 
 
15.os.path.getatime(path) 
返回path所指向的文件或者目录的最后存取时间。 
 
16.os.path.getmtime(path) 
返回path所指向的文件或者目录的最后修改时间

<think>好的,我现在需要帮助用户了解Python中的os模块sys模块path模块的功能与用法。根据用户的问题,他们可能希望得到清晰的解释实际的使用示例。首先,我应该回忆这些模块的主要功能,并参考提供的引用资料来确保准确性。 首先,os模块主要用于与操作系统交互,比如文件目录操作。用户提到的os.path模块其实属于os模块的一部分,但用户可能误以为它是一个独立的模块。我需要明确指出这一点,避免混淆。引用[1]引用[3]都提到了os.path的用途,比如路径拼接、检查文件是否存在等,应该用这些例子来说明。 接下来是sys模块,它涉及Python解释器的环境,比如命令行参数、模块搜索路径等。引用[2]中的示例展示了如何获取系统路径、编码信息等,这些可以作为sys模块的典型用法。需要解释sys.argv、sys.path常用功能,并给出代码示例。 然后,关于path模块,用户可能指的是os.path,因为Python中没有单独的path模块。这时候需要澄清这一点,并详细说明os.path的各种方法,如join、exists、basename等。引用[3]中的例子非常适合用来展示os.path.join的使用方法,可以引用过来。 在组织内容时,应该分模块逐一讲解,每个部分先介绍功能,再给出使用方法示例代码。同时,要确保代码格式正确,符合用户要求的$...$$$...$$格式,但这里主要是代码块,所以需要注意使用三个反引号包裹代码示例。 另外,用户要求生成相关问题,我需要根据这三个模块的常见疑问点来设计问题,比如模块间的区别、常用函数、实际应用场景等。 现在需要检查是否有遗漏的功能点,比如os模块的其他功能(如执行系统命令、环境变量),sys模块的版本信息等。确保覆盖主要功能,同时引用正确的参考资料。例如,引用[1]提到os模块的文件目录操作,引用[2]展示了sys模块的环境路径编码,引用[3]详细说明了os.path.join的使用。 最后,确保回答结构清晰,分点说明,使用中文,并且每个引用的部分都正确标注来源。同时,生成的相关问题要针对用户可能进一步想了解的内容,比如模块比较、具体函数使用、实际案例等。</think>### Pythonossysos.path模块详解 #### 一、os模块:操作系统交互 功能:执行文件/目录操作、进程管理、环境变量控制等 ```python import os # 创建目录 os.mkdir("new_folder") # 获取当前工作目录 current_dir = os.getcwd() # 返回字符串:/current/path # 执行系统命令 os.system("ls -l") # 在Linux/Mac显示目录内容 # 环境变量操作 print(os.environ["PATH"]) # 输出系统PATH变量 os.environ["MY_VAR"] = "value" # 设置临时环境变量 ``` #### 二、sys模块:解释器交互 功能:访问命令行参数、模块系统、解释器配置等 ```python import sys # 命令行参数处理 print(f"脚本名称:{sys.argv[0]}") # 输出:当前脚本名称 print(f"参数列表:{sys.argv[1:]}") # 输出:附加参数列表 # Python路径管理 sys.path.append("/custom/module/path") # 添加模块搜索路径 # 系统信息获取 print(f"Python版本:{sys.version}") # 输出:3.9.5 (default...) print(f"系统平台:{sys.platform}") # 输出:win32/linux/darwin ``` #### 三、os.path模块:路径处理(属于os模块) 功能:跨平台路径操作,兼容不同操作系统格式 ```python from os import path # 路径拼接(自动处理斜杠) full_path = path.join("dir1", "subdir", "file.txt") # 生成:dir1/subdir/file.txt # 路径解析 dirname = path.dirname("/a/b/c.txt") # 返回:/a/b filename = path.basename("/a/b/c.txt") # 返回:c.txt # 文件检测 exists = path.exists("data.csv") # 返回布尔值 is_file = path.isfile("data.csv") # 判断是否为文件 # 路径标准化 clean_path = path.normpath("dir//sub/../file") # 生成:dir/file ``` #### 四、核心区别对比表 | 模块 | 应用场景 | 典型函数 | |---------|-------------------------------|----------------------------| | os | 文件/目录操作、进程管理 | mkdir, rename, system | | sys | 解释器配置、运行时环境 | argv, exit, modules | | os.path | 路径操作、文件属性检测 | join, exists, splitext | #### 五、联合使用示例 ```python import sys import os from os import path # 获取脚本所在目录 script_dir = path.dirname(path.abspath(sys.argv[0])) # 创建日志目录 log_dir = path.join(script_dir, "logs") if not path.exists(log_dir): os.mkdir(log_dir) # 构造日志路径 log_file = path.join(log_dir, "app.log") with open(log_file, "w") as f: f.write(f"System encoding: {sys.getfilesystemencoding()}") ``` [^1]: Python内置模块文档说明 [^2]: 系统运行时环境获取示例 [^3]: 路径操作最佳实践
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值