我正在尝试列出我的F:驱动器中的所有目录,并将名称写入excel。
为此我使用的是Python和xlwt。
我在excel中写入文件的名称时遇到了一些错误。我试图使用for循环来增加行号,但它没有工作,因为它在写第二个值时再次击中同一个单元格。
错误:
Exception: Attempt to overwrite cell: sheetname=u'F_Directories' rowx=1 colx=0
import xlwt
import os
workbook = xlwt.Workbook()
sheet = workbook.add_sheet("F_Directories")
for dir in os.listdir("F:\\"):
# <--- Not sure how to increase row number (r)---->
sheet.write(r,0,dir)
workbook.save("C:\\Users\\praveen\\Desktop\\OnlinePayment_files\\Stuffs.xls")
请建议。
答案 0 :(得分:1)
您可以使用enumerate()
:
for row, dir in enumerate(os.listdir("F:\\")):
sheet.write(row, 0, dir)
它基本上会成为当前索引和序列项的对。默认情况下,从0
开始:
>>> l = ['a', 'b', 'c']
>>> for index, item in enumerate(l):
... print index, item
...
0 a
1 b
2 c
答案 1 :(得分:1)
这是enumerate
的好例子:
for r, dir in enumerate(os.listdir("F:\\")):
sheet.write(r, 0, dir)
enumerate
就像将range
函数添加到迭代器一样 - 它从0
开始,并在循环的每次迭代中添加1
。
答案 2 :(得分:1)
您需要的函数enumerate(),此函数调用每个元素和元素的索引号。一个简单的例子;
>>> a=["x","y","z"]
>>> for h,y in enumerate(a):
print (h,y)
0 x
1 y
2 z
>>>
所以你应该使用这个;
for index, direc in enumerate(os.listdir("F:\\")): #you can write whatever you want
sheet.write(index, 0, direc) #instead of index and direc
#but be sure you don't store them
#as variables before