Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python 2.7/pyMel从Excel中提取信息?_Python_Python 2.7_Maya_Import From Excel_Pymel - Fatal编程技术网

使用python 2.7/pyMel从Excel中提取信息?

使用python 2.7/pyMel从Excel中提取信息?,python,python-2.7,maya,import-from-excel,pymel,Python,Python 2.7,Maya,Import From Excel,Pymel,我知道这要求很高,但我已经研究了很多在excel文档中使用python查找列或行的方法 但是,这些解决方案要求您在我无权访问时导入不同的包。我这样做的主要目的是利用预先制作的excel文档,文档中列出了着色器,并基于简短的搜索提取它们 那么,有没有人成功地使用python读取excel文档,如果有,您是否能够将命名行与命名列匹配 编辑: 选择答案是因为这是最接近的解决方案,尽管它不一定能回答我的问题。然而,考虑到用户及其excel文档将使用相同的列和行来获得可用的数据库,它仍然提供了一个非常合

我知道这要求很高,但我已经研究了很多在excel文档中使用python查找列或行的方法

但是,这些解决方案要求您在我无权访问时导入不同的包。我这样做的主要目的是利用预先制作的excel文档,文档中列出了着色器,并基于简短的搜索提取它们

那么,有没有人成功地使用python读取excel文档,如果有,您是否能够将命名行与命名列匹配


编辑: 选择答案是因为这是最接近的解决方案,尽管它不一定能回答我的问题。然而,考虑到用户及其excel文档将使用相同的列和行来获得可用的数据库,它仍然提供了一个非常合理的解决方案

TL;博士:


在不使用外部包的情况下,很难通过比较列和行来获取数据集。将数据提取为数组并指定哪个“列”是哪个更容易。

我将excel文件保存为
.csv
文件,使用
numpy.genfromtxt
导入数据,并使用
分隔符=','
参数解析测试文件

例如:

import numpy
data = numpy.genfromtxt("my_file.csv", delimiter=",")
# do stuff with data

模块xlrd已经在python包中,非常易于使用:

import xlrd
xlsFile = xlrd.open_workbook(path)
sheetName = xlsFile.sheets()[0].name

for s in xlsFile.sheets():
    for row in range(s.nrows):
        print s.cell(row, 1)

您还可以使用内置的读取CSV文件来读取CSV文档,因此无需安装任何外部模块

import csv
with open('names.csv') as csvfile:
     reader = csv.DictReader(csvfile)
     for row in reader:
         print(row['first_name'], row['last_name'])
如果您只是获取阅读器的全部内容并将它们塞进一个列表中,那么列表将包含所有行,并且每一行都将是一个使用第一行标题的字典。到达一个特定的牢房可能是这样的:

records = []
with open('names.csv') as csvfile:
     reader = csv.reader(csvfile)
     for row in reader:
         records.append(row)

# cel "A4" would be
records[0][3]
1.装置 Maya在所有受支持的平台上使用Python版本2.7.11。 Maya的独立Python shell在Windows上命名为
mayapy.exe
,位于
D:\Program Files\Autodesk\Maya2017\bin\mayapy.exe
。 将其放入系统环境路径

如果未找到
pip.exe
,请转到并下载
get pip.py

从控制台:

C:\Users\JM-FF>python get-pip.py
成功安装pip后,
pip.exe
位于
D:\Program Files\Autodesk\Maya2017\Python\Scripts
。将其放入系统环境路径

安装XlsxWriter:

C:\Users\JM-FF>pip install XlsxWriter
2.步 现在在ScriptEditor中打开Maya,并编写:


导入xlsxwriter
工作簿=xlsxwriter.workbook('hello.xlsx')
工作表=工作簿。添加工作表()
工作表。写(11,3,“你好”)
工作簿.关闭()
现在,您可以使用Python从Maya向Excel读取和写入数据


hello.xlsx
位于
D:\Program Files\Autodesk\Maya2017\bin

能否提供excel文档的快照?只是想看看数据是如何格式化的,在哪些单元格中等等。。。那我就给你一个答案。我曾经使用过Excel和Python,但从未找到一种不导入任何软件包就以本机方式读取Excel文件的方法。如果我不得不在一些软件包(xlwings、openpyxl和win32api)之间进行推荐,我会同意这样做,我不能使用其他软件包。excel的屏幕截图将不起作用,但我可以制作一个模拟版本,以便您了解我的目的-我将在今晚晚些时候发布它。我已经在下面的csv模块答案下发布了一个excel文档供您查看。是的,我不久前正在检查它。它工作得非常好,除了我需要交叉检查几个变量或获取一组特定的信息,这些信息在几个单元格之间变化。那么,是什么阻止了您使用CSV模块实现这一点呢。您能否给出一个具体的用例和一个示例数据以及您试图实现的目标。很抱歉,格式不正确,但excel是excel。。。这是我能做的最好的。。。迅速地。M1-M5(代表物料)需要与序列号或代码号交叉核对。由于CSV模块只读取行,所以我无法对照“M-#”交叉检查实际材料。我的想法是,我可以利用Maya中的交叉检查系统来提取正确的材质名称。我希望这有点道理。。。请询问是否需要。让我重申一下,M1-M5可能并不总是列在单元格H到L下。因此,执行上述操作将是一项困难的任务。似乎您必须要做的是创建一个特定于文件的查找表。首先收集所有数据,然后获取看起来像实际标题行的数据,然后创建一个表,标题行内容作为键,物理位置作为值。然后只需使用该查找表在将来的行中进行搜索。或者,只需找到该行并将其重新导出,然后再将其转为第二个CSV,这样真正的标题就是第一行XLRD,而不是Python std库的一部分。