问题
How can I bring python to only output directories via os.listdir
, while specifying which directory to list via raw_input
?
What I have:
file_to_search = raw_input("which file to search?\n>")
dirlist=[]
for filename in os.listdir(file_to_search):
if os.path.isdir(filename) == True:
dirlist.append(filename)
print dirlist
Now this actually works if I input (via raw_input
) the current working directory. However, if I put in anything else, the list returns empty. I tried to divide and conquer this problem but individually every code piece works as intended.
回答1:
that's expected, since os.listdir
only returns the names of the files/dirs, so objects are not found, unless you're running it in the current directory.
You have to join
to scanned directory to compute the full path for it to work:
for filename in os.listdir(file_to_search):
if os.path.isdir(os.path.join(file_to_search,filename)):
dirlist.append(filename)
note the list comprehension version:
dirlist = [filename for filename in os.listdir(file_to_search) if os.path.isdir(os.path.join(file_to_search,filename))]
来源:https://stackoverflow.com/questions/45870945/use-os-listdir-to-show-directories-only