2011-01-30 80 views
-1

我想用Python制作一个文件浏览器,但是我的代码无法正常工作。请看看我的代码,并告诉我是否可以识别任何问题。Python中的文件浏览器

from os import * 
a=raw_input("what is my file?") 
b=raw_input("home or media?") 
c=[] 
d=[] 
def fafaBrowser(): 

    if b=="home": 
     c.append("/home/farbod") 
    if b=="media": 
     c.append("/media/farbod") 

fafaBrowser() 

def fafaBrowser2(): 
    for k in range(len(c)): 
     for i in range(len(listdir(c[k]))): 
      if a==listdir(c[k])[i]: 
       print True 
       d.append(1) 
      else: 
       i=+1 
     if d==[]: 
     #c.append(listdir(c[0])) 

      for j in range(len(listdir(c[k]))): 
       c.append(listdir(c[k])[j]) 
      #c.pop(k) 
      fafaBrowser2() 



fafaBrowser2() 
+2

SO是一个提问的地方,“修正我的代码”实际上不是一个。你能否告诉我们更多关于你的期望以及你如何得不到预期的信息?或者以其他方式缩小你需要帮助的范围? – 2011-01-30 19:33:53

+0

你需要阅读常见问题,以找出什么样的问题,这里要问这里 – 2011-01-30 20:04:28

回答

2

我不是很肯定什么代码是应该做的,所以我不能帮助那里。

编辑:我想你想fafaBrowser2找到通过搜索家庭或媒体目录,然后迭代每个子目录插入文件的位置。使用Python的glob模块或os.walk函数。

然而,也有一些作风问题,你应该在python看:

首先,你应该避免全局变量,尤其是如果他们有短名称。 (我意识到这一定是早期代码,但即使如此...)

使用import os,而不是​​。

把剧本的 “身体” 在if __name__=="__main__"块:

if __name__=='__main__': 
    a=raw_input("what is my file?") 
    b=raw_input("home or media?") 
    ... 

fafaBrowser应该接受B中的参数和返回值C(再次,避免全局可变状态):

def fafaBrowser(location): 
    c=[] 
    if location == 'home': 
     c.append(...) 
    ... 
    return c 

然后:

c = fafaBrowser(b) # rename these variables sometime 

fafaBrowser2

不是使用for k in range(len(c))当你不需要索引时:只需使用for location in c:其他循环也是如此。此外,很难说出什么fafaBrowser2应该做的。

编辑:其他一些问题:

if d == []: 

应该

if not d: 

因为在Python空列表是布尔值false。

不要自己增加索引,因为你是在此代码做:

else: 
    i+=1 

只要它关闭。