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

转载自:http://blog.csdn.net/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所指向的文件或者目录的最后修改时间

  • 10
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当您使用Python编写脚本时,如果您想要导入位于其他目录中的模块,您需要将该模块所在目录添加到Python模块搜索路径中。这可以通过使用sys模块中的path属性来实现。以下是一个示例: ```python import sys # 添加模块搜索路径 sys.path.append('/path/to/module') # 导入模块 import module ``` 在这个例子中,我们将模块所在的路径添加到sys.path中,然后使用import语句导入模块。添加模块搜索路径的方法可以让Python解释器在搜索模块时查找指定的目录,从而使我们可以成功导入位于其他目录中的模块。 ### 回答2: Pythonsys.path.append是一个很重要的操作,其作用是动态添加模块搜索路径,以便在程序中使用某些模块时,可以从指定的路径中寻找该模块。 在Python中,当我们引用某个模块时,Python会搜索一个叫做sys.path的路径列表,来寻找该模块。这个列表可以通过sys.path.append来动态添加新的路径。如果在此列表中找不到该模块Python会抛出ImportError异常。 sys.path.append()可以在Python运行时动态添加指定目录到sys.path中,使Python程序在运行时能够查找该目录下的模块。这个方法Python中非常常用方法之一,它可以用于自定义模块的位置,让Python解释器在自定义的目录中查找模块sys.path.append()方法接受一个路径字符串作为参数,这个路径字符串可以是相对路径或绝对路径。当我们调用该方法添加新路径时,Python会自动将这个路径添加到sys.path列表的最后一个元素中,这样Python程序就可以在此路径中查找模块了。 值得注意的是,每个Python程序都有一个默认的sys.path列表,这个列表由Python安装时自动配置,它包括Python安装目录下的库路径和Python标准库所在路径。sys.path列表并不是可修改的,因此我们需要动态添加新路径。 总之,sys.path.append()方法是一个非常有用的方法,可以方便地添加新模块搜索路径,使Python程序可以访问新路径下的模块。在实际开发中,我们可以根据需要动态添加新路径,来满足不同的需求。 ### 回答3: `sys.path` 是Python的module search path,通过它可以找到模块(.py文件)所在的路径,从而使Python代码中能够正确地导入和使用这些模块Python在启动时会设置一组默认的搜索路径,在其中包括了Python标准库、安装的第三方库以及当前目录。 `sys.path.append()` 是一种常见的修改`sys.path` 的方式,它可以将一个新的目录添加到`sys.path` 中,从而允许Python在这个目录中查找模块。使用 `sys.path.append()`,我们可以手动指定目录,这个目录可以包括我们自己的Python代码和第三方库。 `sys.path.append()` 的语法非常简单,只需要传递一个字符串参数,即要添加的目录路径。例如,假设你的项目代码存放在目录 `/home/user/myproject` 中,你可以通过以下代码添加该目录到`sys.path`中: ``` import sys sys.path.append('/home/user/myproject') ``` 使用`sys.path.append()`添加目录到`sys.path`中并不是一个常见的做法,因为它有一些缺点。如果我们在多个地方都使用`sys.path.append()`添加目录,那么系统路径会变得很长,很难维护。此外,如果不小心添加了一个路径错误的目录,可能会导致Python在运行时无法找到需要的模块,这会让我们非常头痛。 相较于`sys.path.append()`,更好的做法是将Python代码和相关的第三方库集中到一个虚拟环境中,并将这个虚拟环境作为Python解释器的默认环境。这样,我们就可以方便地管理Python库依赖关系,同时也可以避免出现系统路径过长和目录错误的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值