使用 xlwt 写入 Excel

Write in Excel using xlwt

我正在尝试列出我的 F: 驱动器中的所有目录并将名称写入 excel。

为此,我使用了 Python 和 xlwt。

我在 excel.I 中写入文件名时遇到一些错误 试图使用 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")

求推荐。

您可以使用 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

这是 enumerate 的一个很好的案例:

for r, dir in enumerate(os.listdir("F:\")):
    sheet.write(r, 0, dir)

enumerate 就像将 range 函数添加到迭代器 - 它从 0 开始,并在循环的每次迭代中添加 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