python是一门跨平台,python跨平台程序之-相对路径与绝对路径

对于python入门不久的同志这可能是一个比较头疼的问题,但对老鸟来说可能已经是老生常谈了。由于网上关于这方面 的资料不多,所以这道菜更主要是为小鸟准备的,虽然我也还是一支小鸟:)。 也欢迎老鸟们品尝,并提出您们宝贵的意见。

Python是一门跨平台的语言,但并不是说 你用python随 便写的一个程序就能在不同的平台都能运行。而相对路径和绝对路径是这方面的典型(至少我这么认为)(相对路径在windows下可行,而在linux下提示找不到相应的文件路径), 因为linux和windows本身结构就存在着较大的差 异,而这差异也给写扩平台的程序造成了困难。我自己尝试过两种方法来解决这个问题,下边就与大家一起分享。

The first one :程序中涉及路径时先区分系统类型,再根据不同的操作系统作不同的处理。Python目前支持以下操作系统的识别:'posix', 'nt', 'mac', 'os2', 'ce', 'java', 'riscos',我也没有完全试验过,不过目前主流的应用系统是windows,linux和unix也在蓬勃的发展,所以我们主要区分它 们就行了。一般我用一个if…else语句来区分,菜鸟的做法,老鸟们怎么做呢?

if os.name == ”nt”

windows路径……

Else

Linux路径……

小节:这种方法较笨,非常不灵活,但这样做解决了同一个程序可以同时在windows和linux下运行而不需要改动的问题

The second one :这 种方法相对灵活的将相对路径转化为不同操作系统的绝对路径,我相对喜欢这种方法:)。For example :你写了一个小系统,所有文件和子文件夹都放在一个f:/school的主文件夹里,这个主文件 夹下有class、teacher、student、log等文件夹,有main.py这个小系统的主文件,还有好 一些subfile.py的文件。而主文件夹在linux的路径可能为/home/kkk/school,其他相对的路径和windows中相同。那么怎样同一他们呢?在main.py中定义一个全局变量path,赋值于path =  os.path.abspath(os.path.dirname(sys.argv[0]))。这个path在windows下运行它的值为“f:/school”,而在linux下运行它的值为“/home/kkk/school”,写到这估计大家也知道我想干啥了,如果在程序中要访问(读写)日志文件可以用path+“/log/kk.log”来表示文件的路径:)。

小节:此方法相对于第一种方法灵活,需要注意的是path+“/log/kk.log”,我们一般喜欢用path+//log//kk.log这样的方式,但这样在linux中就行不通了,提示找不到文件路径

注:网上还有在主程序中加入sys.path.append(path),然后系统中访问文件用相对路径一说,但我试了一下好像有问题(大家可以尝试一下,让我也分享你们 的劳动成果:))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值