繁体   English   中英

为什么os.walk没有识别我的变量名?

[英]Why isn't os.walk recognising my variable name?

我在TextWrangler中编写了以下内容:

directory = raw_input("See contents of: ") 

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

不幸的是,当我在终端中运行它并通过在Dock中键入或拖动文件夹来分配目录路径时,没有任何反应。 甚至没有错误消息。 另一方面,当我在TextWrangler中输入以下内容然后在终端中运行程序时,它工作正常。

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

那么我的问题是,为什么os.walk不接受变量形式的路径。 我正在使用的书建议这样做,就像我在尝试理清这些问题时在网上看到的大多数示例一样。

只需在循环之前print directory以查看您真正获得的路径。 这就是问题所在,而不是os.walk不接受变量。

将OSX下的文件夹放入终端时:

  1. 像空格一样的特殊字符会被转义以便在shell中使用
  2. 目录名称后插入一个空格

两者都会阻止os.walk找到路径。 你没有得到错误很简单。 os.walk没有给出那个案例的错误。 它根本不会遍历不存在的路径。

不幸的是,当我在终端中运行它并通过在Dock中键入或拖动文件夹来分配目录路径时,没有任何反应。

如您所说,我已经尝试过将文件夹拖到我的终端上(我在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 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM