文档章节

python pitfall (陷阱)--不同平台os模块文件名排序

Honghe
 Honghe
发布于 2013/03/01 16:24
字数 335
阅读 399
收藏 4

标题取的太大了,但只先记录一点,说明python os模块在不同平台下不同的行为。可能以后会添加,主要为抛砖引玉...
环境:

  • windows 7 english 32bit
  • Ubuntu 12.04 32bit
  • python 2.7.3
win32与linux中,运行列出文件命令(dir, ls), 默认对文件名的排序是先数字后字母。因win32大小写不区别,所以字母的排序就没什么好说了。linux下,字母的序列并没有按ascii表的序列,而是同一个字母的大小写排在一起,大写字母紧跟在小写字母之后。 但python的os模块对两个平台处理结果却不一样。取以下6个文件名做测试,文件名与代码如下:

12ab  Abc  Eab  a1bc  acd  bc
for root, dirs, files in os.walk(os.getcwd()):
    print files
上面代码在win32平台下的结果是:

['12ab', 'a1bc', 'Abc', 'acd', 'bc', 'Eab']
同一代码,在Linux平台下的结果却是:
['Eab', 'acd', 'a1bc', '12ab', 'bc', 'Abc' ]

所以,在linux平台下的输出结果看不出有什么规律,最好的办法是,统一对代码增加排序:

for root, dirs, files in os.walk(os.getcwd()):
    print sortd(files)
['12ab', 'Abc', 'Eab', 'a1bc', 'acd', 'bc']

这样,严格按照ascii表的顺序排列,避免出现莫名其妙的错误

© 著作权归作者所有

共有 人打赏支持
Honghe

Honghe

粉丝 56
博文 125
码字总数 35178
作品 3
福州
高级程序员
Python中os与sys两模块的区别

前言 os与sys模块的官方解释如下: os: This module provides a portable way of using operating system dependent functionality. 这个模块提供了一种方便的使用操作系统函数的方法。 sys:...

xiaoge2016
04/22
0
0
Python的设计理念和优缺点

  可扩充性可说是Python作为一种编程语言的特色。新的内置模块(module)可以用C 或C++写成。而我们也可为现成的模块加上Python的接口。Python可以使用户避免过分的语法的羁绊而将精力主要...

StreamWang
2010/04/21
0
1
Python操作小结(mysql、txt\json、crontab、http)

有段时间没有使用python了,对它的语法有点生疏,花了几个小时熟悉,期间发现很多小细节不清楚。为了下次能快速上手,避免重复犯错,我将python使用过程中的一些问题在这篇博文中记录小结一下...

lilugoodjob
07/02
0
0
【转载】关于python文件操作-很好的总结

总是记不住API。昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 得到当前工作目录,即当前Pyt...

beijing_zbs
2015/10/30
0
0
关于python文件操作【转载】

总是记不住API。昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 得到当前工作目录,即当前Pyt...

杨俊生
2012/07/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

MySQL 乱七八糟的可重复读隔离级别实现

MySQL 乱七八糟的可重复读隔离级别实现 摘要: 原文可阅读 http://www.iocoder.cn/Fight/MySQL-messy-implementation-of-repeatable-read-isolation-levels 「shimohq」欢迎转载,保留摘要,谢...

DemonsI
今天
2
0
Spring源码阅读——2

在阅读源码之前,先了解下Spring的整体架构: 1、Spring的整体架构 1. Ioc(控制反转) Spring核心模块实现了Ioc的功能,它将类与类之间的依赖从代码中脱离出来,用配置的方式进行依赖关系描...

叶枫啦啦
今天
1
0
jQuery.post() 函数格式详解

jquery的Post方法$.post() $.post是jquery自带的一个方法,使用前需要引入jquery.js 语法:$.post(url,data,callback,type); url(必须):发送请求的地址,String类型 data(可选):发送给后台的...

森火
今天
0
0
referer是什么意思?

看看下面这个回答(打不开网页可以把网址复制到搜索栏): https://zhidao.baidu.com/question/577842068.html

杉下
今天
1
0
使用U盘安装CentOS-解决U盘找不到源

1. 使用UltraISO制作CentOS安装盘 如果需要安装带界面的系统,为保证安装顺利,可选择Everything版本的ISO制作安装盘。 2. 在BIOS中选择使用U盘安装 系统启动后,进入安装选择界面,其中有三...

Houor
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部