os.walk()的初始目录

时间:2013-12-21 23:55:25

标签: python

我正在尝试使用os.walk()打印出目录及其子目录中的所有文件。这就是我写的:

def usewalk():
   for root, dirname, filename in os.walk("/"):
       print filename

我不知道我应该使用什么作为os.walk()的目录。也就是说,我不确定括号中应包括哪些内容。我想如果我使用“/”,它将从文件所在的目录开始,但它打印出不在其中的文件,例如“['。dbfseventsd','。DS_Store','。file' ,'。hotfiles.btree','mach_kernel']“。在我看来,它是从Python的默认目录开始的?

3 个答案:

答案 0 :(得分:3)

不,/是文件系统的 root 。使用.当前目录开始:

def usewalk():
   for root, dirname, filenames in os.walk("."):
       print filename

也打印root以查看循环的目录名称;以下代码段打印完整路径名称:

def usewalk():
   for root, dirname, filenames in os.walk("."):
       for filename in filenames:
           print os.path.join(root, filename)

答案 1 :(得分:1)

正如我之前所说 - /目录是你的系统根目录。

为了一个好的起点,你有几个选择:

  1. 从您当前的工作目录开始:os.walk(os.getcwd())
  2. 从Python文件的位置开始:os.walk(os.path.dirname(__file__))
  3. 从您的用户主目录开始:os.walk(os.getenv('HOME'))
  4. 将目录作为程序/函数的参数。
  5. 我不建议从.开始,因为它可能无法移植到Windows(getenv选项也不会,但对于基于unix的程序来说它是一个不错的选择)。使用os.getcwd()代替可移植性和正确性。

    我建议#4 - 因为它会产生最有用和可预测的代码。

答案 2 :(得分:0)

/是根目录。您可能会将它与./混淆,这是引用当前目录的常用方法。