导入pandas打破了我的os.walk循环

时间:2015-10-14 18:51:56

标签: python pandas

我刚刚发现了大熊猫和安装立即购买我的循环迭代文件表现奇怪。这是一个对我来说有问题的最小例子:

#!/usr/bin/env python
import os

PATH=os.environ['HOME']+"/scripts/"

for path_, dir_names, file_names in os.walk(PATH):
  for name in file_names:
    print(path_+name)

由于我在文件夹中只有一个单个文件(即此脚本),因此输出符合预期:

/home/scripts/parser.py

但是,如果我现在使用import ospandas)扩展import os, pandas,则会打印两次文件:

/home/scripts/parser.py
/home/scripts/parser.py

我不知道这里发生了什么。我有点搞砸了安装(apt-get install python3-pandas)?

修改

我不知道这是否相关,但是当我导入pandas时会生成一个__pycache__文件夹。

1 个答案:

答案 0 :(得分:2)

这实际上是一个通用的Python东西。这个脚本将在没有pandas的情况下复制问题:

parser.py:

.par-1 {
  width: 3px;
  color: #fff;
  padding: 1px 0;
}

.par-2 {
  width: 6px;
  color: #000;
  padding: 0 2px;
}

.par-3 {
  width: 9px;
  color: #fff;
  padding: 3px 0;
}

.par-4 {
  width: 12px;
  color: #000;
  padding: 0 4px;
}

.par-5 {
  width: 15px;
  color: #fff;
  padding: 5px 0;
}

.par-6 {
  width: 18px;
  color: #000;
  padding: 0 6px;
}

其中tempfile是标准的python包。

现在以bash运行

import tempfile
print 'hello'

print语句执行两次!会发生什么是parser.py导入tempfile,而tempfile尝试导入标准python包“parser”(https://docs.python.org/2/library/parser.html)。但是由于 ”。” (当前目录)在PYTHONPATH中,它再次导入原始脚本,打印“hello”额外的时间。

故事的道德:不要将脚本命名为与标准库包相同的东西,绝对不要乱用PYTHONPATH。