如何迭代邻近目录

时间:2016-08-27 13:25:56

标签: python

我有一个像这样的项目结构

test/foo.py
test/bar (directory with 10 files)
src/
README.MD

foo.py(位于test dir中),我希望迭代bar目录中的10个文件(也在test目录中)。我试着这样做

import os

for path in os.listdir('bar'):
    etc

但它说,"没有这样的文件或目录:bar"

然后我试着这样做

basepath = '/Users/me/pythonprojects/project_x/bar' 
for path in os.listdir(basepath):
    etc

但是,当我计算它迭代的文件数时,它是0(不是预期的10)。

然后我试着这样做

   for path in '/Users/me/pythonprojects/project_x/test/bar':
       etc

然而,它会迭代我系统中的每个文件(数百个,而不仅仅是10个条形码)。

虽然这不是我想做的,但是如果从命令行我将.的参数传递给sys.argv [1],然后尝试像这样迭代bar dir

for path in sys.argv[1]

它遍历bar dir中的十个文件。

那么,foo.py是否有办法迭代bar中的文件(只有bar dir中的文件)

更新,当我在print(os.getcwd(), "foo.py cwd")foo.py(然后在根目录中从run_test.py调用测试运行器)时,它会显示

/Users/me/pythonprojects/project_x

即。 os.getcwd()无法识别foo.py位于项目的test目录中,这可能是因为测试是从root运行的?

1 个答案:

答案 0 :(得分:1)

使用os.path中的函数执行此操作(仅适用于脚本,而不是REPL):

import os

# retrieve path to directory with script
script_dir = os.path.dirname(os.path.realpath(__file__))

bar_dir = os.path.join(script_dir, 'bar')

for f in os.listdir(bar_dir):
    print(f)