我正在尝试列出单个目录中的所有html文件,这些文件正常。但是我也试图从该列表中删除所有不是html文件的内容。
我有8个名为1,2,3 ......等的文件和6.htmxl(删除)和pipe.sh.save(删除)
我制作的代码删除了.htmxl文件,但没有从列表中删除.sh.save文件。
from os import listdir
from os.path import isfile, join
import pyimport
import time
def main():
onlyfiles = [f for f in listdir('/home/pi/keyboard/html') if isfile(join('/home/pi/keyboard/html',f)) ]
j = 0
print len(onlyfiles)
for i in onlyfiles:
if i.find(".html") == -1:
print i
print "not a html"
j = onlyfiles.index(i)
print j
del onlyfiles[j]
else:
print i
print "html found"
time.sleep(0.5)
outfiles = onlyfiles
print outfiles
return outfiles
if __name__ == "__main__":
main()
我还有另一个代码,假设要获得“outfiles”列表
import server_handler
files = server_handler.main()
fileList = server_handler.outfiles
但是当我跑步时,我得到了:
AttributeError: 'module' object has no attribute 'outfiles'
我在另一个创建'output'的代码上运行几乎完全相同的代码,我以完全相同的方式导入它,所以我不确定为什么它不能正确导入。
答案 0 :(得分:1)
您可能会发现以下方法更合适,它使用Python的glob模块:
import glob
print glob.glob('/home/pi/keyboard/html/*.html')
这将返回该文件夹中自动以.html
结尾的所有文件的列表。
答案 1 :(得分:0)
将i.find(".html")
替换为i.endswith(".html")
。现在你应该只获得HTML文件(或者更确切地说只有HTML文件)。
对于第二部分 - 删除:
fileList = server_handler.outfiles
server_handler.main()
已经返回列表,因此您可以在files
中找到它。最后一行没有任何意义。
修改强>
Martin's回答有更好的方法来获取文件。所以我建议你使用他的建议而不是我的建议:)。
答案 2 :(得分:0)
如果main是一个类,你可以使用
class main():
def __init__(self):
....
self.outfiles = onlyfiles
return self.outfiles