我有一个python脚本,我试图设置输出一个json目录列表到网页。我正在取得进步,但现在我已经碰壁了。顺便说一句,我几乎没有python经验。这是我的代码:
if self.path.endswith("/"):
self.send_response(200)
self.send_header('Content-type', 'text/plain')
self.end_headers()
dirlist = os.listdir
self.wfile.write(dirlist)
return
这是我的错误:
File "C:\Documents and Settings\Admin\Desktop\TiddlyWikis\Songs\Audio\server.p
y", line 18, in do_GET
self.wfile.write(dirlist)
File "C:\Python32\lib\socket.py", line 297, in write
return self._sock.send(b)
TypeError: 'builtin_function_or_method' does not support the buffer interface
顺便说一下,如果你知道一个输出json和所有东西的python脚本,我很乐意使用它,因为我已经没有接近这个了。
答案 0 :(得分:0)
os.listdir(path)
返回一个列表,其中包含path
给出的目录中的条目名称。该列表按任意顺序排列。它不包括特殊条目'。'和'..'即使它们出现在目录中
http://docs.python.org/library/os.html#os.listdir
import json
和
if self.path.endswith("/"):
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
dirlist = os.listdir('.') # Change the path here
self.wfile.write(json.dumps(dirlist))
return
答案 1 :(得分:0)
好吧,我一点也不知道我做错了什么,但我将list.directory函数从http.py复制到我的脚本中并且它有效。现在我可以在这里工作。
class MyHandler(http.server.SimpleHTTPRequestHandler):
def list_directory(self, path):
#list_directory function code
希望发布的内容可以帮助他人。
答案 2 :(得分:0)
首先你忘了打电话给listdir:
dirlist = os.listdir
这将函数 listdir分配给名称dirlist。这不是你想要的,你想得到一个目录中的文件列表。你可以通过调用函数listdir得到它:
dirlist = os.listdir(path)
其中path是您要列出的目录的路径。
其次,您正在尝试将Unicode字符串写入二进制输出。不要自己构造json数据,使用json库。 http://docs.python.org/dev/library/json.html
答案 3 :(得分:-1)
首先尝试显式转换为字符串:
self.wfile.write(str(dirlist))
然后,使用JSON:
self.wfile.write(json.dumps(dirlist))
您只需要格式化dirlist“缓冲区”,以便write()了解如何发送它。