English 中文(简体)
Why isn t os.walk recognising my variable name?
原标题:

I ve written the following in TextWrangler:

directory = raw_input("See contents of: ") 

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

Unfortunately, when I run it in terminal and assign the directory path by typing or dragging a folder in from the dock nothing happens. Not even an error message. On the other hand when I enter the following in TextWrangler then run the program in Terminal, it works fine.

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

My question then, why is os.walk not accepting a path in the form of a variable. The book that I m using suggests it should, as do most of the examples I ve seen on the net whilst trying to sort this out.

最佳回答

Simply print directory before the loop to see what path you really get. That’s the problem, not that os.walk is not accepting variables.

When you drop a folder under OSX into the terminal:

  1. special chars like spaces get escaped for usage in the shell
  2. a space is inserted after the directory name

Both will prevent os.walk from finding the path. That you don t get an error is simple. os.walk doesn t give an error for that case. It simply doesn t iterate over the non-existing path.

问题回答

Unfortunately, when I run it in terminal and assign the directory path by typing or dragging a folder in from the dock nothing happens.

I have tried this by, as you said, dragging the folder to my terminal (I am on Linux) and it displays the path surrounded with quotes.

Remove the quotes after your raw_input should fix your problem

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




相关问题
2 mysql instances in MAC

i recently switched to mac. first and foremost i installed xampp. then for django-python-mysql connectivity, i "somehow" ended up installing a seperate MySQL. now the seperate mysql installation is ...

Iterating over string/strlen with umlauted characters

This is a follow-up to my previous question . I succeeded in implementing the algorithm for checking umlauted characters. The next problem comes from iterating over all characters in a string. I do ...

Controlling OSX windows

I m trying to control windows of a foreign OSX applications from my application. I d like to 1. move the windows on the screen 2. resize the windows on the screen 3. change the currently active window ...

Switching J2SE versions on Mac OS (SnowLeopard)

My current JDK on Mac OS (10.6) is set to 1.6 and I d like to switch to 1.5. A listing of /System/Library/Frameworks/JavaVM.framework/Versions/ shows: lrwxr-xr-x 1 root wheel 10 Nov 3 18:34 ...

Scrolling inside Vim in Mac s Terminal

I ve been googling around trying to figure out if it s possible to use my mouse wheel to scroll while inside Vim in Mac s Terminal, with no luck. It seems as if only X11 or iTerm support this. Before ...

export to MP3 from quicktime API

A question for Apple,QT programmers. Would like to know if it s possible to export a Movie object to MP3 using the QuickTime API. Preferably the ConvertMovieToFile function. I ve looked at ...

热门标签