我已经在Textwrangler中写下了以下内容:

directory = raw_input("See contents of: ") 

for root, dirs, files in os.walk(directory):
   print root, dirs, files

不幸的是,当我在终端运行它并通过从码头中键入或拖动文件夹来分配目录路径时,什么也不会发生。甚至没有错误消息。另一方面,当我在Textwrangler中输入以下内容,然后以终端运行该程序时,它可以正常运行。

for root, dirs, files in os.walk("/Users/paulpatterson/Documents/Python"):
print root, dirs, files

那么我的问题,为什么OS.步行不接受变量形式的路径。我正在使用的这本书建议应该这样做,就像我在试图解决此问题时在网上看到的大多数示例一样。

有帮助吗?

解决方案

简单地 print directory 在循环之前,看看您真正获得的路径。那是问题,不是 os.walk 不接受变量。

当您将文件夹放在OSX下方的终端时:

  1. 像空格这样的特殊字符被逃脱了外壳的使用情况
  2. 目录名称后插入一个空间

两者都将防止OS.Walk找到路径。您不会遇到错误很简单。 OS.Walk没有给出这种情况的错误。它根本不会迭代不存在的路径。

其他提示

不幸的是,当我在终端运行它并通过从码头中键入或拖动文件夹来分配目录路径时,什么也不会发生。

正如您所说,我已经尝试将文件夹拖到我的终端(我在Linux上),并显示了带有引号的路径。

在您之后删除报价 raw_input 应该解决您的问题

import os

directory = raw_input("See contents of: ")
directory = directory.strip()
if directory[0] == "'" and directory[-1] == "'":
    directory = directory[1:-1]

print directory

for root, dirs, files in os.walk(directory):
   print root, dirs, files
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top