随笔 - 90  文章 - 0 评论 - 94 阅读 - 60万

为了尝试一下python的正则表达式,我写了一个小程序命名为re.py,结果在运行的时候出了问题。根据错误提示到网上搜了一下也没有找到解决方法。最后还是自己明白过来了。原来re.py这个名字编译成字节码后是re.pyc,当在程序当中import re的时候,会首先在当前目录下寻找re.pyc,找到后就不会将/usr/local/lib/python2.5/里的re.pyc加载进来了。所以给源文件起名字应该避免和标准库重名。

但是python的库有很多,很难保证你起的名字就一定不会和它们中任何一个重名。所以我又写了个python程序来验证原文件名的合法性。
下面是源程序verify_py_name.py的代码:

#!/usr/bin/env python
import os, string, sys
path 
= '/usr/local/lib/python2.5/'
dic 
= {}
for root, dirs, files in os.walk(path):
        
for name in files:
                dic[string.split(name, 
'.'1)[0]] = None
for py_name in sys.argv[1:]:
        
if dic.has_key(string.split(py_name, '.'1)[0]):
                
print ':(    ' + py_name + ' is an illegal python source file name!'
        
else:
                
print '  :)  ' + py_name + ' is legal.'

使用方法:verify_py_name 参数1 [参数2 ...]
$ ./verify_py_name.py a.py re.py os.py
  :)  a.py is legal.
:(    re.py is an illegal python source file name!
:(    os.py is an illegal python source file name!

 

posted on   MainTao  阅读(544)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示