文档章节

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

Honghe
 Honghe
发布于 2013/03/01 16:24
字数 335
阅读 404
收藏 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

粉丝 57
博文 127
码字总数 35797
作品 3
福州
高级程序员
私信 提问
Python中os与sys两模块的区别

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

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

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

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

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

lilugoodjob
2018/07/02
0
0
关于python文件操作【转载】

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

杨俊生
2012/07/21
0
0
Python模块之递归处理文件和文件夹

这里有两个需求:删除某个目录以及子目录下的所有.svn文件删除某个文件夹下所有文件在Python中,文件操作主要来自os模块,主要方法如下: os.listdir(dirname):列出dirname下的目录和文件 ...

Neo_
2012/11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TiDB 3.0 Beta Release Notes

2019 年 1 月 19 日,TiDB 发布 3.0 Beta 版,对应 master branch 的 TiDB-Ansible。相比 2.1 版本,该版本对系统稳定性、优化器、统计信息以及执行引擎做了很多改进。 TiDB 新特性 支持 Vi...

TiDB
16分钟前
2
0
从拼多多优惠券事件看到的一些反思

本文由云+社区发表 作者:颜国平 摘要:最近几年,电商行业飞速发展,各种创业公司犹如雨后春笋大量涌现,商家通过各种活动形式的补贴来获取用户、培养用户的消费习惯,即将到来的“ 购物狂欢...

腾讯云加社区
16分钟前
4
0
记录一次BUG

1: 请求注册页面时生成一个UUID, 并且将UUID隐藏在页面中并且添加到session中去。 2: 发送短信时获取手机号和UUID,将两者发送至服务器 3: 先判断UUID和session中UUID是否一致。 不一致就...

专业写BUG的程序员
21分钟前
1
0
阿里云漏洞提示:phpMyAdmin <=4.8.1 checkPageValidity函数缺陷可导致GETSHELL

如题: phpMyAdmin <=4.8.1 后台checkPageValidity函数缺陷可导致GETSHELL 即:checkPageValidity函数对外部输入过滤不严,可导致本地包含任意文件。进一步地攻击者可通过注入代码到特定文件...

408582708
22分钟前
1
0
PyTorch可视化理解卷积神经网络

摘要: 神经网络工具像一个黑匣子,无法知道它的中间是如何处理的。本文使用图片加代码的形式讲解CNN网络,并对每层的输出进行可视化,便于初学者理解,可以动手实践下哦! 如今,机器已经能...

阿里云官方博客
34分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部