如何在.xls工作表python中为每个项目创建一个目录

时间:2016-09-14 13:38:47

标签: python

我需要帮助,我正在尝试为电子表格中的每个项目(行)创建一个目录,我该怎么做python 3.5。  我尝试使用pip和conda安装pandas,但它无法正常工作,错误说我需要visual-c ++ - build-tools。即使安装了工具,也会发生同样的错误。 。  panda是在.xls工作表中为每一行创建目录的最佳方法吗?我有多个.xls文件

2 个答案:

答案 0 :(得分:1)

你的问题的一些要点对我来说不是很清楚,但我会尽力为你提供一些想法。 您可以使用xlrd(文档:http://xlrd.readthedocs.io/en/latest/index.html)。

我们假设你有一个文件' sample.xls',里面有很多张。对于每张工作表,您希望在' C:\ test'中创建任意数量的文件夹。 (让我们假设它是一个Windows路径)作为该表中的行数。我们还假设您要使用工作表的名称,后跟渐进编号 命名此类文件夹(您可以轻松编辑代码以满足您的实际需求)。

import os
from xlrd import open_workbook

parentPath = r"C:\test"
xlsFile = open_workbook('sample.xls') # Open the xls file
for sheetName in xlsFile.sheet_names(): # Loop over the sheets inside the xls file
    i = 1 # Initialize the index to be used in folder names
    for row in xlsFile.sheet_by_name(sheetName).col(0): # Select the first column and loop over the rows
        childPath = ''.join([sheetName, '_', str(i)])
        newPath = os.path.join(parentPath,childPath) 
        if not os.path.exists(newPath): # Make sure the path does not exist
            os.makedirs(newPath)
        i += 1

PS:我同意使用CSV文件可以让事情变得更容易。

修改

以下解决方案基于您希望创建与xls文件中每个工作表中(非空)单元格数量一样多的文件夹的假设,并且每个文件夹都具有格式名称' sheetName_rowi_colj& #39; 其中i和j是两个索引,它们与工作表中的单元格位置有关。

import os
from xlrd import open_workbook

parentPath = r"C:\test"
xlsFile = open_workbook('sample.xls',ragged_rows=True) # Open the xls file
for sheetName in xlsFile.sheet_names(): # Loop over the sheets inside the xls file
    for rowIdx in range(xlsFile.sheet_by_name(sheetName).nrows): # Loop over the rows
        for colIdx in range(xlsFile.sheet_by_name(sheetName).row_len(rowIdx)): # Loop over the columns for each row
            if xlsFile.sheet_by_name(sheetName).cell_value(rowIdx,colIdx) != '': # Check if the cell is empty
                childPath = ''.join([sheetName, '_row', str(rowIdx+1), '_col', str(colIdx+1)]) # +1 because indices start from zero
                newPath = os.path.join(parentPath,childPath) 
                if not os.path.exists(newPath): # Make sure the path does not exist
                    os.makedirs(newPath)

如果你有许多xls文件,只需循环它们。

答案 1 :(得分:0)

如果将文件另存为CSV,则此任务将更加轻松。试试这个:

import csv, sys, os

folder_list = []
with open('folders.csv', 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        for item in row:
            if item != None:
                folder_list.append(item)
                print item

for folder in folder_list:
    try:
        os.makedirs(folder)
    except WindowsError as e:
        pass